我有两个依赖的组合框:
$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'
有人可以解释一下这是为什么吗?
答案 0 :(得分:10)
错误消息来自inArray
验证程序。您可以通过设置select元素的正确键来禁用它:
'registerInArrayValidator' => false
答案 1 :(得分:0)
您通过从控制器类调用echo
来打破MVC概念。
动作控制器不必产生任何输出。只有观点必须这样做!
答案 2 :(得分:0)
您必须完全禁用 inArray 验证程序,或在检查表单验证之前向select元素添加选项。通过这种方式,您可以确保选择值在范围内。