Symfony sfWidgetFormChoice всегда недопустим с несколькими вариантами выбора (флажки) - PullRequest
2 голосов
/ 04 февраля 2011

У меня странная проблема с проверкой флажка.Это всегда недействительно ... Я много читал об этой проблеме, но не смог найти решение ... (Я использую array_keys для проверки) Итак, вот мой код:

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

1 Ответ

6 голосов
/ 04 февраля 2011

При указании «несколько» в параметрах виджета, вы должны сделать то же самое для соответствующего валидатора:

$this->setValidators(array(
    'devices' => new sfValidatorChoice(array(
        'choices' => array_keys($optionsArr),
        'multiple' => true
    ),
    array('required' => 'Please choose something!'))
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...