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

时间:2012-04-18 08:27:15

标签: php zend-framework combobox zend-form

我有两个依赖的组合框:

 $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'

有人可以解释一下这是为什么吗?

3 个答案:

答案 0 :(得分:10)

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

'registerInArrayValidator' => false

答案 1 :(得分:0)

您通过从控制器类调用echo来打破MVC概念。 动作控制器不必产生任何输出。只有观点必须这样做!

答案 2 :(得分:0)

您必须完全禁用 inArray 验证程序,或在检查表单验证之前向select元素添加选项。通过这种方式,您可以确保选择值在范围内。