Ho una sottomaschera ($ fileUploadSubform) all'interno di una sottomaschera ($ requestSubform). Ho chiamato setElementsBelongTo ("requestRow [$ rowNumber]") sulla sottomascheta madre ($ requestSubform).Effetto Zend setElementsBelongTo() sugli elementi della sottomaschera
$requestSubform= new Zend_Form_Subform();
$requestSubform->setElementsBelongTo("requestRow[$rowNumber]");
// add elements to $requestSubform
// now create the file upload subform
$fileUploadSubform= new Zend_Form_SubForm();
$fileUploadSubform->addElement('file', 'fileName')
->setLabel('File');
$fileUploadSubform->addElement('text', 'fileDesc')
->setLabel('File Description');
$requestSubform->addSubForm($fileUploadSubform, 'fileUpload');
$this->view->field = $requestSubform->__toString();
// pass it as json via ajax back to javascript
Quando il form viene reso, $ fileUploadSubform fileDesc elemento name' e id sono i seguenti
name="requestRow[1][requestRow][1][fileUpload][fileDesc]"
id="requestRow-1-fileUpload-fileDesc"
Perché il valore che ho impostato nel setElementsBelongTo() la funzione viene ripetuto due volte?
Grazie in anticipo!
[Aggiornamento 2015/08/13]
Come soluzione temporanea, ho appena chiamato setElementsBelongTo() dal subform bambino ($ fileUploadSubform) invece della sottomaschera genitore ($ requestSubform)
[Aggiornamento 2015/08/17]
ho provato il seguente codice che ho ricevuto da http://zend-framework-community.634137.n4.nabble.com/Improved-array-support-for-Zend-Form-td667215.html come si dice in quel post che subform elementsTobelong per il corretto funzionamento.
$form = new Zend_Form();
$form->setElementsBelongTo('foobar');
$form->addElement('text', 'firstName')
->getElement('firstName')
->setLabel('First Name')
->setRequired(true);
$form->addElement('text', 'lastName')
->getElement('lastName')
->setLabel('Last Name')
->setRequired(true);
$subForm = new Zend_Form_SubForm();
$subForm->setElementsBelongTo('foobar[baz]');
$subForm->addElement('text', 'email')
->getElement('email')
->setLabel('Email Address');
$subSubForm = new Zend_Form_SubForm();
$subSubForm->setElementsBelongTo('foobar[baz][bat]');
$subSubForm->addElement('checkbox', 'home')
->getElement('home')
->setLabel('Home address?');
$subForm->addSubForm($subSubForm, 'subSub');
$form->addSubForm($subForm, 'sub')
->addElement('submit', 'save', array('value' => 'submit'));
print_r($form->__toString());
Ma ecco quello che sto ottenendo per gli elementi $ subForm e $ subFubForm.
<input id="foobar-foobar-baz-email" type="text" value="" name="foobar[foobar][foobar][baz][email]">
<input id="foobar-foobar-baz-foobar-baz-bat-home" type="checkbox" value="1" name="foobar[foobar][foobar][baz][foobar][foobar][baz][foobar][baz][bat][home]">
[Aggiornamento 2015/08/24]
ho finalmente capito il problema.
E 'stata questa la linea
$this->view->field = $additionalInfoSubform->__toString();
C'erano alcuni elementi che non mostrano prima è per questo che ho aggiunto quella linea. E solo ora capisco che quegli elementi che non sono stati mostrati sono quelli senza il decoratore ViewHelper. Quindi, quando ho impostato ViewHelper come decoratore e rimosso i campi precedenti e ho chiamato setElementsBelongTo() della sottomaschera senza dover dalla radice della gerarchia solo da quella sottomaschera, allora ha funzionato.
Quindi, qual è la domanda? Hai risolto o no? Che cosa desidera l'output? – Stanimir
Invece di "requestRow [1] [requestRow] [1] [fileUpload] [fileDesc]" come nome dell'elemento, dovrebbe essere "requestRow [1] [fileUpload] [fileDesc]". – artsylar
Non riesco a riprodurre questo. Qual è la versione esatta di ZF che stai utilizzando? Se è successiva alla 1.12.9, puoi fornire il codice completo, incluso il modulo principale (principale)? – darkangel