0

Fieldsetには、Element\RadiofooElement\Textbarがあります。Zend Framework 2でラジオボタン要素の選択されたオプションを取得する方法は?

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', 
       ... 
      ], 
      ... 
     ]); 
} 

フィールドbarの検証は、選択fooオプションに応じています。

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フォームの他のものと共にサーバーにPOSTされ、このすべてが$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".' 
         ] 
        ] 
       ] 
      ] 
     ], 
    ]; 
} 

"fooは「A」と等しいかどうかを確認します: あなたは、コールバックバリデータと、このような$contextアレイを使用することにより、条件付きで必要なフィールドを作成することができますtrueの場合は入力を有効とマークし、falseでない場合は入力を無効とマークします。

関連する問題