zf2创建选择/下拉框并在控制器中填充选项?

时间:2012-09-06 13:40:20

标签: zend-framework2

要创建一个文本输入框,我在zend framework2中使用了folling代码

use Zend\Form\Form;

class Loginform extends Form
{
    public function __construct()
    {
           $this->add(array(            
            'name' => 'usernames',
            'attributes' =>  array(
                'id' => 'usernames',                
                'type' => 'text',
            ),
            'options' => array(
                'label' => 'User Name',
            ),
        ));       
    }
}

我可以使用

填充控制器操作中的值
$form = new Loginform();
$form->get('usernames')->setAttribute('value', 'user 1');

我知道如何在zf2中的选择/下拉框中执行相同的操作?

参考:zend framework 2 documentation

4 个答案:

答案 0 :(得分:14)

检查API(文档非常糟糕,请检查代码)。

使用Zend\Form\Element\Select类并设置options属性,如下所示:

$element->setAttribute('options', array(
    'key' => 'val',
    ...
));

使用FormRowFormSelect视图助手输出元素。

此网站也是示例和信息的良好来源:http://zf2.readthedocs.org/en/latest/modules/zend.form.quick-start.html

示例:

$this->add(array(     
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'usernames',
    'attributes' =>  array(
        'id' => 'usernames',                
        'options' => array(
            'test' => 'Hi, Im a test!',
            'Foo' => 'Bar',
        ),
    ),
    'options' => array(
        'label' => 'User Name',
    ),
));    

如果需要,您也可以在控制器中分配选项,如上所示。

答案 1 :(得分:4)

$form = new Loginform();      
$form->get('usernames')->setValueOptions($usernames );

$ usernames 是一个数组

参考Click Here

答案 2 :(得分:2)

Zend Framework 2.2,选择选项已被移入'选项'而不是'属性',所以上面的代码也会被更改

$this->add(array(     
    'type' => 'Zend\Form\Element\Select',       
    'name' => 'usernames',
    'attributes' =>  array(
       'id' => 'usernames'              
    ),
    'options' => array(
        'label' => 'User Name',
        'options' => array(
            'test' => 'Hi, Im a test!',
            'Foo' => 'Bar',
        ),
    ),
));

答案 3 :(得分:2)

如果您想在控制器中执行此操作,请按照这种方式执行

$form->get('ELEMENT_NAME')->setAttribute('options' ,array('KEY' => 'VALUE'));