要创建一个文本输入框,我在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中的选择/下拉框中执行相同的操作?
答案 0 :(得分:14)
检查API(文档非常糟糕,请检查代码)。
使用Zend\Form\Element\Select
类并设置options属性,如下所示:
$element->setAttribute('options', array(
'key' => 'val',
...
));
使用FormRow
或FormSelect
视图助手输出元素。
此网站也是示例和信息的良好来源: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 是一个数组
答案 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'));