2014-10-02 3 views
0

readonly 속성이 selectbox에 적용되지 않았습니다. 내가 읽기 전용 속성을 어떻게 적용되는지 zf2의 선택 필드에 읽기 전용 속성을 적용하는 방법은 무엇입니까?

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

내 컨트롤러

내가 선택 박스 만 적용되지 읽기 전용 특성에 대한 읽기 전용 속성을 적용

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 
        ) 
       ) 
      ) 
     ) 
    ), 

컨트롤러 코드 : 여기 형태의 내 코드?

답변

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"의 기존 데이터를 보존해야합니다. –

1

저도 같은 문제를 겪고 내 솔루션이었다

  1. 양식 요소 select를 disabled로 설정했습니다.
  2. FormHidden과 FormSelect에 Form 요소를 추가했습니다. 보기 PHTML 파일에

예 :

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

그것이 도움이되기를 바랍니다.

관련 문제