2011-05-12 3 views
2

У меня есть следующий код в форму Zend, создавая выпадающий список кормили из базы данных:Как получить выбранное значение с помощью Zend_Form_Element_Select

// ... previously create the array $list and fill it from database 

$element = new Zend_Form_Element_Select('name'); 
$element->setLabel('List name') 
    ->addMultiOptions($list); 
$this->addElement($element, 'list_name', array(
     'required' => true, 
     )); 

Вопрос: как я могу получить значение после размещения в форме? С приведенным выше кодом $ post ['name'] возвращает индекс выбранного элемента. Деталь: код, сгенерированный html, показывает, что содержимое в списке $ присваивается каждому элементу как «label =», а атрибут «value =» - это индекс, который я получаю через $ post. Поэтому я считаю, что это вопрос правильного определения вариантов Zend_Form_Element_Select ...

Благодаря

ответ

1

Массив $ список должен быть построен как:

$list = array(
    'value1' => 'label1', 
    'value2' => 'label2', 
); 

После того, как вы назвали IsValid() , вы можете получить значение с помощью $form->getValue('list_name');

Если, вместо этого, вы хотите, чтобы получить ярлык, вы можете сделать:

$listNameOptions = $form->getElement('list_name')->getMultiOptions(); 
$label = $listNameOptions[$form->getValue('list_name')]; 
1

В первый, у меня есть один и тот же вопрос, как вы, то я попробовал, как это, он работает:

создать выберите OBJ:

...//code above ellipsis 
$userName = new Zend_Form_Element_Select("userName"); //create obj 
$userName->setLabel('user'); 

$db = Zend_Registry::get("db"); 
$sql = $db->quoteInto('select * from user',null); 
$users = $db->query($sql)->fetchAll(); 

$userArray = array(); 
foreach ($users as $user){ 
    /*use value as the key,while form submited,key was added into response obj*/ 
    $userArray[ $user['name']] = $user['name']; //create the $list 
} 

$userName->addMultiOptions($userArray); 
... 

получить выбранные данные:

... 

//check if method is post 

if ($this->getRequest()->isPost()){ 

    $formData = $this->getRequest()->getPost(); 

    if($loginForm->isValid($formData)){ 

     //get the selected data 

     $userName = $this->getRequest()->getParam('userName'); 
... 
Смежные вопросы