Zend Framework: выберите поле с тем же именем - PullRequest
1 голос
/ 01 июля 2011

в форме продукта У меня есть поле выбора со знаниями, другими словами: какие знания требуются для установки этого продукта.Однако некоторое время запрашиваются два разных знания.Я сделал это с помощью jquery, поэтому я клонировал поле выбора в форме.Но у полей выбора есть тот же идентификатор / имя после клона.Я пытался использовать массив уведомлений для имени с [], но ZF не принимает это.Как я могу решить эту проблему?С уважением Андреа

здесь форма

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 Ответ

1 голос
/ 01 июля 2011
$selectElement->setIsArray(true);

Это может решить вашу проблему.

...