ZF2创建选择/下拉框,并填充在控制器选项?(zf2 create select/drop down

2019-09-22 04:36发布

创建一个文本输入框,我用的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框架2文档

Answer 1:

检查API(该文档是可怕的,所以检查的代码)。

使用Zend\Form\Element\Select类和设置选项的属性如下所示:

$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',
    ),
));    

您还可以分配在控制器的选择,如果你需要,如上图所示。



Answer 2:

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

$用户名是一个数组

参考点击这里



Answer 3:

Zend框架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',
        ),
    ),
));


Answer 4:

如果你想这样做的控制器,然后做这样的方式

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


文章来源: zf2 create select/drop down box and populate options in controller?