我有两个依赖的组合框:
$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 验证器或添加选项以选择元素。这样,您就可以确保选择值在范围内。