2012-04-18 107 views
3

我有两个相关的组合框:为什么我会收到错误“'0'在干草堆中找不到'?

$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

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

+0

它只是一个测试,看看组合框 – 2012-04-18 08:39:04

+0

的内容我会改变它是符合与MVC概念,但问题仍然存在 – 2012-04-18 08:46:15

10

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

'registerInArrayValidator' => false 
+0

我尝试它不工作PS:第二个组合框用ajax – 2012-04-18 09:48:27

+1

填写+1 - 我知道这是旧的,但我有与第二个元素被AJAX填充相同的问题,它* * *正常工作。 '$形式 - > getElement( 'XYZ') - > setRegisterInArrayValidator(假);'。谢谢! – AlexP 2013-06-12 15:31:29

0

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

相关问题