2014-10-02 66 views
0

只读属性未应用于选择框。 这里是我的形式的代码:如何在zf2中的选择字段上应用只读属性?

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

,并在我的控制器上我选择框,但不适用于只读属性适用只读属性如何申请只读属性?

回答

4

选择不具有只读属性。这里是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', 
    ), 
)); 
+0

在这种情况下,您应该使用隐藏字段来保留“field_name”的现有数据 – 2016-07-26 10:57:32

1

我有同样的问题,我的解决办法是:

  1. 我把表单元素选择为禁用。
  2. 我将Form元素添加到formHidden和FormSelect中。

例鉴于PHTML文件:

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

希望它能帮助。