如何使用Zend_Form_Element_Select选择值

时间:2011-05-12 10:49:05

标签: zend-form

我在Zend表单中有以下代码,创建一个从数据库提供的下拉列表:

// ... 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生成的代码显示$ list中的内容作为'label ='分配给每个元素,'value ='属性是我通过$ post检索的索引。 所以我认为这是正确定义Zend_Form_Element_Select选项的问题......

由于

2 个答案:

答案 0 :(得分:1)

$ list数组应该构建为:

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

在调用isValid()之后,您可以使用$form->getValue('list_name');

检索值

如果您要检索标签,则可以执行以下操作:

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

答案 1 :(得分: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'); 
...
相关问题