5

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

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 文档

4

4 回答 4

14

检查 API(文档很糟糕,所以检查代码)。

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

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

FormRow使用orFormSelect视图助手输出元素。

该站点也是示例和信息的良好来源: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',
    ),
));    

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

于 2012-09-06T13:42:56.650 回答
4
$form = new Loginform();      
$form->get('usernames')->setValueOptions($usernames );

$usernames是一个数组

参考点击这里

于 2014-12-03T10:15:10.547 回答
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',
        ),
    ),
));
于 2013-05-30T13:36:54.887 回答
2

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

$form->get('ELEMENT_NAME')->setAttribute('options' ,array('KEY' => 'VALUE'));
于 2013-09-05T04:25:44.927 回答