2013-11-18 3 views
3

У меня есть элемент select следующим образом, и я хочу сделать его необязательным. Но я не могу этого сделать. Это дает мне ошибку «требуется значение и не может быть пустым»Zend framework 2 form select element set required false

 $this->add(array(
      'name' => 'civil_status', 
      'type' => 'Select', 
      'attributes' => array(
       'id' => 'civil_status', 
       'class' => 'form-control', 
      ), 
      'options' => array(
       'empty_option' => 'Civil status', 
       'value_options' => array(
        'married' => 'Married', 
        'single' => 'Single', 
        'other' => 'other', 
       ), 
      ) 
     )); 

Я поставил проверку следующим

  $this->inputFilter->add($factory->createInput(array(
         'name' => 'civil_status', 
         'required' => FALSE, 
         'allow_empty' => TRUE, 
         'filters' => array(
          array('name' => 'StripTags'), 
         ), 
         'validators' => array(
          array(
           'name' => 'StringLength', 
           'options' => array(
            'encoding' => 'UTF-8', 
            'min' => '2', 
            'max' => '255', 
           ), 
          ), 
         ), 
      ))); 

Я пытался удалить требуется от входного фильтра, как описано выше, и даже больше я попытались удалить требуемую проверку с контроллера также следующим образом. Но ничего не работает. Пожалуйста, дайте мне знать, если вы, ребята, знаете, чтобы исправить эту проблему.

  $form->getInputFilter()->get("civil_status")->setRequired(FALSE); 
      $form->getInputFilter()->get("civil_status")->setAllowEmpty(TRUE); 
+0

Попробуйте удалить валидатор? –

+0

@RemiThomas Можете ли вы показать мне путь? – Ruwantha

+0

Вы можете удалить в свой массив свой входной фильтр. Или как этот путь $ form-> getInputFilter() -> get ("civil_status") -> remove ("StringLength"); –

ответ

2

Выбор был построен в InArray валидатор вам не нужно использовать StringLength здесь или фильтры, необходимо использовать только «требуется» => ложь, которая должна работать.

$this->inputFilter->add($factory->createInput(array(
        'name' => 'civil_status', 
        'required' => false, 
     ))); 

Я знаю, это может быть странный вопрос, но вы добавить свой InputFilter в форму, прежде чем ударить $ форма-> IsValid()?

Смежные вопросы