2013-06-08 10 views
5

Próbuję potwierdzić wybór mnożenia za pomocą filtru wejściowego, ale za każdym razem, gdy widzę błąd. Błąd to "notInArray": "Dane wejściowe nie zostały znalezione w stogu siana". (Używam ajaxa, ale to się nie zgadza). Pokażę część mojego kodu, aby było bardziej zrozumiałe.Jak sprawdzić poprawność mnożenia wybierz przy użyciu Zend Framework 2

w Kontroler:

if ($request->isPost()) { 
      $post = $request->getPost(); 
      $form = new \Settings\Form\AddUserForm($roles);// 
      $form->get('positions') 
         ->setOptions(
           array('value_options'=> $post['positions'])); 

//.... more code...

Kiedy kładę print_r ($ post [ 'pozycje']); Widać: tablica (0 => 118 1 => 119)

..../w postaci/UserForm.php utworzyć wielowarstwowej elementu

$this->add(array(
       'type' => 'Zend\Form\Element\Select', 
       'attributes' => array(
        'multiple' => 'multiple', 
        'id' => 'choosed_positions', 
       ), 
       'required' => false, 
       'name' => 'positions', 



     )); 

oraz w pliku Walidacja kodu jest:

$inputFilter->add($factory->createInput(array(
         'name' => 'positions', 
         'required' => false, 
         'validators' => array(
          array(
           'name' => 'InArray', 
           'options' => array(
            'haystack' => array(118,119), 
            'messages' => array(
             'notInArray' => 'Please select your position !' 
            ), 
           ), 
          ), 
         ), 

Co może być przyczyną za każdym razem, gdy widzisz ten błąd i jak mogę to naprawić?

+0

Czy to się nie uda bez względu na liczbę wybranych opcji (zero, jeden lub dwa)? – dualmon

+0

Co więcej, czy to się nie uda, jeśli nie zrobisz tego wielokrotnie? – dualmon

+0

Co otrzymasz, jeśli var_dump ($ form-> get ("pozycje") -> getValueOptions()) – dualmon

Odpowiedz

3

Domyślnie wybiera dołączonyInArray walidator w Zend Framework 2.

Jeśli dodajesz nowy - będziesz miał dwa.

Należy wyłączyć domyślną następująco:

$this->add(array(
    'type' => 'Zend\Form\Element\Select', 
    'options' => array(
     'disable_inarray_validator' => true, // <-- disable 
    ), 
    'attributes' => array(
     'multiple' => 'multiple', 
     'id' => 'choosed_positions', 
    ), 
    'required' => false, 
    'name' => 'positions', 
)); 

I należy pozbyć się dodatkowego komunikatu o błędzie. Daj nam znać, jeśli ci to pomoże.