0

Fieldset에는 Element\RadiofooElement\Textbar이 있습니다.Zend Framework 2에서 radion 버튼 요소의 선택된 옵션을 얻는 방법은 무엇입니까?

public function init() 
{ 
    $this->add(
     [ 
      'type' => 'radio', 
      'name' => 'foo', 
      'options' => [ 
       'label' => _('foo'), 
       'value_options' => [ 
        [ 
         'value' => 'a', 
         'label' => 'a', 
         'selected' => true 
        ], 
        [ 
         'value' => 'b', 
         'label' => 'b' 
        ] 
       ] 
      ] 
      ... 
     ]); 

    $this->add(
     [ 
      'name' => 'bar', 
      'type' => 'text', 
      'options' => [ 
       'label' => 'bar', 
       ... 
      ], 
      ... 
     ]); 
} 

선택한 foo 옵션에 따라됩니다 bar 필드의 검증.

public function getInputFilterSpecification() 
{ 
    return [ 
     'bar' => [ 
      'required' => $this->get('foo')->getCheckedValue() === 'a', 
      ... 
     ], 
    ]; 
} 

그러나 어떤 방법 Radio#getCheckedValue()가 없다 : 나는 foo의 선택된 값을 얻을 수 있다면 그것은 쉽게 구현할 수 있습니다. 자, $this->get('foo')->getOptions()['value_options']을 반복 할 수는 있지만 실제로는 유일한 방법입니까?

Fieldset#getInputFilterSpecification()에서 선택한 옵션 Zend\Form\Element\Radio을 얻는 방법은 무엇입니까?

답변

0

선택한 옵션은 HTML 양식의 모든 항목과 함께 서버에 게시되며이 모든 것은 유효성 검사기에서 $context 배열을 통해 사용할 수 있습니다. 즉, 옵션 '은'을 선택하고 수익을

public function getInputFilterSpecification() { 
    return [ 
     'bar' => [ 
      'required' => false, 
      'allow_empty' => true, 
      'continue_if_empty' => true, 
      'required' => true, 
      'validators' => [ 
       [ 
        'name' => 'Callback', 
        'options' => [ 
         'callback' => function ($value, $context) { 
          return $context['foo'] === 'a' 
         }, 
         'messages' => [ 
          \Zend\Validator\Callback::INVALID_VALUE => 'This value is required when selecting "a".' 
         ] 
        ] 
       ] 
      ] 
     ], 
    ]; 
} 

'갑'이 'A'와 동일한 지 확인합니다 : 당신은 콜백 검증이 같은 $context 배열을 사용하여 조건에 필요한 필드를 만들 수 있습니다 true이 유효하면 입력을 유효로 표시하고 false이면 유효하지 않은 입력으로 표시합니다.

관련 문제