2011-07-01 44 views
1

产品形式我有一个选择领域知识,换言之:什么知识要求安装此产品。然而,有些时候,有两种不同的知识要求。我用jQuery做了这个,所以我克隆了表单中的select字段。但是克隆之后,选择字段具有相同的id /名称。我试着用[]的名字使用数组通知,但ZF不接受这个。我该如何解决这个问题?问候安德烈zend框架:选择同名产品

这里的形式

class BM_Form_AudProducts extends Zend_Form { 


public function init(){ 

    /* 
    * addElementPrefixPath() method which will apply the decorator to all form elements. 
    * However, addElementPrefixPath() method will work only when you have created elements using the form object. 
    * If you are instantiating your element directly, then use addPrefixPath() on each of your element 
    */ 

    $this->addPrefixPath('BM_Form_Decorator', 'BM/Form/Decorator', 'decorator'); 

    $this->setName('frmAudProduct')->setMethod('post')->setAction(''); 

    $category = new Application_Model_ProductCategory(); 
    $category = $category->selectCategories(); 
    $selCategory = new Zend_Form_Element_Select('selCategory'); 
    $selCategory->setLabel('Category:') 
      ->setRequired(true)->setMultiOptions($category) 
      ->addValidator('NotEmpty',true,array('message' => 'Category is required!')); 

    $txtTitle = new Zend_Form_Element_Text('txtTitle'); 
    $txtTitle->setLabel('Title:') 
      ->setRequired(true) 
      ->addValidator('NotEmpty', true, array('messages' => 'Title is required!')); 

    $txtAbbr = new Zend_Form_Element_Text('txtAbbr'); 
    $txtAbbr->setLabel('Abbreviation:') 
      ->setRequired(true) 
      ->addValidator('NotEmpty', true, array('messages' => 'Abbreviation is required!')) 
      ->setIsArray(TRUE); 

    $txtDescription = new Zend_Form_Element_Textarea('txtDescription'); 
    $txtDescription->setLabel('Description :') 
      ->setAttrib('cols',40) 
      ->setAttrib('rows',8); 

    $disposability = new Application_Model_Disposability(); 
    $disposability = $disposability->selectDisposability(); 
    $selDisposability = new Zend_Form_Element_Select('selDisposability'); 
    $selDisposability->setLabel('Disposability:') 
      ->setRequired(true)->setMultiOptions($disposability) 
      ->addValidator('NotEmpty',true,array('message' => 'Dsiposability is required!')); 

    $knowledge = new Application_Model_Knowledge(); 
    $knowledge = $knowledge->selectKnowledges(); 
    $selKnowledge = new Zend_Form_Element_Select('selKnowledge'); 
    $selKnowledge->setIsArray(TRUE); 

    $selKnowledge->setLabel('Knowledge team:') 
      ->setRequired(true)->setMultiOptions($knowledge) 
      ->addValidator('NotEmpty',true,array('message' => 'Knowledge is required!')) 
      ->setDescription('<a href="#" id="duplicateKnw">Add another Team</a>') 
      ; 

    $txtValidFrom = new Zend_Form_Element_Text('txtValidFrom',array('class' => 'datepicker')); 
    $txtValidFrom->setLabel('Valid from:') 
        ->addValidator('Date'); 

    $txtValidTo = new Zend_Form_Element_Text('txtValidTo',array('class' => 'datepicker')); 
    $txtValidTo->setLabel('Valid to:') 
        ->addValidator('Date'); 

    $chkActive = new Zend_Form_Element_Checkbox('chkActive'); 
    $chkActive->setLabel('Active?'); 

    $idProduct = new Zend_Form_Element_Hidden('idProduct'); 

    $btnSubmit = new Zend_Form_Element_Submit('btnSubmit'); 
    $btnSubmit->setLabel('')->setValue('Submit')->setOptions(array('class' => 'big-button')); 


    //add the elements to the form 
    $this->addElements(array($selCategory,$btnSubmit,$txtTitle,$txtAbbr,$txtDescription,$selKnowledge,$selDisposability,$txtValidFrom,$txtValidTo,$chkActive,$idProduct)); 
    $this->setElementDecorators(array('Member')); 
} 

}

元素是重复使用jQuery

回答

1
$selectElement->setIsArray(true); 

它可以解决你的问题。

+0

我已经将此添加到selectElement中,并尝试使用textElement,并且在两种情况下都不起作用。目标是有一个元素,如:名称=“txtName []” – cwhisperer

+0

@cwhisperer你可以给我你的形式和所有与你的问题相关的代码? – pltvs

+0

谢谢你的帮助,我将表单代码添加到问题中... – cwhisperer