为什么我收到错误“大海捞针中找不到'0'”


Why do I get the error "'0' was not found in the haystack"?

我有两个依赖的组合框:

 $this->addElement('Select', 'Category',array(
         'label'      => 'Category:',
         'AutoComplete'=> true,              
         'multiOptions' => array('0' => '-Category-',$a->GetCategories(),'2' => '-Add             category-'),
         'required' => true ));
  $this->addElement('Select', 'SubCategory',array(
          'label'      => 'Sub Category:',
          'AutoComplete'=> true, 
          //'multiOptions' => array('0' => '-Select Category-'),
          'required' => true )); 

我想显示第二个的内容,所以我在控制器中执行以下操作:

     if ($this->getRequest()->isPost()) {  //Le formulaire est-il posté ?
     $formData = $this->getRequest()->getPost(); // récupère les infos des formulaires
     if ($form->isValid($formData)) { //Si le formulaire passe la validation
     $v = $form->getValues(); // On récupère les données du formulaire
     $Category= $v['Category'];
     $a=$form->getElement('Category')->getMultiOption('1');
     $cat=$a[$Category];
     $SubCategory =$v['SubCategory '];
     $b=$form->getElement('SubCategory')->getMultiOption($SubCategory);
     $this->view->test =  $b ;

     }
     else {$form->populate($formData);}
    /*Appel du web service d'authentification*/    
  }

当我单击提交按钮时,第二个组合框变为空,我得到:

大海捞针中未找到"0"

有人可以解释为什么会这样吗?

错误消息来自inArray验证程序。您可以通过设置选择元素的正确键来禁用它:

'registerInArrayValidator' => false

你通过从控制器类调用echo来破坏 MVC 概念。操作控制器不必生成任何输出。只有视图才能做到这一点!

在检查表单验证之前,您必须完全禁用 inArray 验证器或添加选项以选择元素。这样,您就可以确保选择值在范围内。