2013-06-08 3 views
5

Ich versuche, eine Multiplikation mit Eingangsfilter zu validieren, aber jedes Mal, wenn ich einen Fehler sehe. Der Fehler ist "notInArray": "Die Eingabe wurde nicht im Heuhaufen gefunden." (Ich benutze Ajax, aber es kommt nicht vor). Ich werde einen Teil meines Codes zeigen, um klarer zu sein.Wie validate Multiply wählen Sie mit Zend Framework 2

in Controller:

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

//.... more code...

Als ich setzen print_r ($ post [ 'Positionen']); Ich sehe: array (0 => 118, 1 => 119)

in ..../form/UserForm.php I das Multiplizier-Element des Code

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



     )); 

und in der Validierungsdatei erstellen ist:

$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 !' 
            ), 
           ), 
          ), 
         ), 

Was kann der Grund sein, jedes Mal, um diesen Fehler zu sehen, und wie ich es beheben kann?

+0

Schlägt es fehl, egal wie viele Optionen Sie wählen (null, eins oder zwei)? – dualmon

+0

Scheitert es auch, wenn Sie es nicht mehrfach machen? – dualmon

+0

Was bekommen Sie, wenn Sie var_dump ($ form-> get ('Positionen') -> getValueOptions()) – dualmon

Antwort

3

standardmäßig wählt InArray Validator in Zend Framework 2.

angeschlossen haben Wenn Sie neue hinzufügen - Sie zwei haben.

Sie sollten Standard ein wie folgt deaktivieren:

$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', 
)); 

Und Sie sollten die zusätzlichen Fehlermeldung loszuwerden. Bitte lassen Sie uns wissen, ob Ihnen das weiterhilft.