3

我有两个相关的组合框:

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

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

4

3 回答 3

10

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

'registerInArrayValidator' => false
于 2012-04-18T09:08:27.047 回答
0

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

于 2012-04-18T08:34:07.957 回答
0

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

于 2014-08-01T01:08:03.583 回答