如何在zf2中的select字段上应用readonly属性?

时间:2014-10-02 13:49:18

标签: zend-framework2 zend-form

readonly属性未在selectbox上应用。 这是我的表格代码:

array(
         'type' => 'Select',
         'name' => 'role',
         'attributes' => array(
             'id' => 'role',
            'error_msg' => 'Select User Role',
         ),
         'options' => array(
            'label' => 'Role'
         ),
        'validation' => array(
            'required'=>false,
            'filters'=> array(
                array('name'=>'StripTags'),
                array('name'=>'StringTrim')
            ),
            'validators'=>array(
                array(
                    'name'=>'StringLength',
                    'options'=>array(
                        'encoding'=>'UTF-8',
                        'min'=>1,
                        'max'=>250
                    )
                )
            )
        )
    ),

控制器代码:

  $form->get('role')->setAttribute('readonly', 'readonly');

并且在我的控制器中我在selectbox上应用readonly属性但是readonly属性没有应用我如何应用readonly属性?

2 个答案:

答案 0 :(得分:5)

选择没有readonly属性。以下是w3c

上的选择说明

您可以做的是禁用选择并添加隐藏字段(如果您希望传递默认值)

示例:

$form->get('field_name')->setAttribute('disabled', 'disabled');

或使用工厂方法:

$this->add(array(
    'name' => 'field_name',
    'type' => 'Zend\Form\Element\Select',
    'options' => array(
        'label' => 'Type',
        'value_options' => array(
            'val1'  => 'name1',
            'valN'      => 'nameN'
        ),
    ),
    'attributes' => array(
        'disabled' => 'disabled',
    ),
));

答案 1 :(得分:1)

我遇到了同样的问题,我的解决方案是:

  1. 我将表单元素select设置为disabled。
  2. 我将Form元素添加到formHidden和FormSelect中。
  3. 查看phtml文件中的示例:

    $element = $form->get('name');
    if ($isReadOnly) {
       echo $this->formHidden($element);
       $element->setAttribute('disabled', 'disabled');
       echo $this->formSelect($element);  //Display the select to user
    } 
    

    希望它有所帮助。