2011-02-04 48 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 2011-02-14 07:56:53