5

我正在尝试使用输入过滤器验证多重选择,但每次我看到一个错误。错误是“notInArray”:“在大海捞针中找不到输入”。(我使用 ajax 但它没有用)。我将显示我的部分代码以更清晰。

在控制器中:

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

//.... more code...

当我把 print_r($post['positions']); 我看到:数组(0 => 118, 1 => 119)

在 ..../form/UserForm.php 我创建了乘法元素

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



        ));

在验证文件中,代码是:

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

每次看到此错误的原因是什么,我该如何解决?

4

1 回答 1

3

默认情况下,选择在 Zend Framework 2 中附加了 InArray 验证器。

如果您要添加新的 -您将有两个.

您应该按如下方式禁用默认值:

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

你应该摆脱额外的错误信息。如果这对您有帮助,请告诉我们。

于 2013-08-05T23:42:34.757 回答