2011-02-04 9 views
2

私はチェックボックスの検証に奇妙な問題があります。だから、それは私がこの問題について多くを読んだことがある...常に無効だが、私は解決策を見つけることができませんでした...(私は、検証にarray_keysを使用) 、ここに私のコードは次のとおりです。Symfony sfWidgetFormChoiceは複数の選択肢(チェックボックス)で常に無効

class NetworkDevicesAndInterfacesForm extends sfForm { 

    public function configure() { 

     $optionsArr = array('one' => 'One','two' => 'Two'); 

     $this->setWidgets(array(

      'devices' => new sfWidgetFormChoice(array(
         'expanded' => true, 
         'multiple' => true, 
         'choices' => $optionsArr), 
      array('class' => 'checkbox')) 
     )); 

     $this->setValidators(array(

      'devices' => new sfValidatorChoice(array(
         'choices' => array_keys($optionsArr)), 
      array('required' => 'Please choose something!')) 
     )); 

     $this->widgetSchema->setLabels(array(

      'devices' => ' ' 
     )); 

     $this->widgetSchema->setNameFormat('devices[%s]'); 
    } 
} 

アクション:ウィジェットオプションで「複数」を指定する場合

if ($request->isMethod('post')) { 

    $this->form->bind($request->getParameter('devices')); 
    if ($this->form->isValid()) { 

     $formValues = $this->form->getValues(); 
     $deviceId = $formValues['devices']; 
    } 
} 

答えて

5

は、対応するバリデータのために同じことを行う必要があります。

$this->setValidators(array(
    'devices' => new sfValidatorChoice(array(
     'choices' => array_keys($optionsArr), 
     'multiple' => true 
    ), 
    array('required' => 'Please choose something!')) 
)); 
+0

ありがとうございました!作品! – kungfucsiga

+1

これは本当に私を助けました。ありがとう – Thilanka

関連する問題