que lea este artículo: http://www.jeremykendall.net/2009/01/19/dynamically-adding-elements-to-zend-form/Añadir un subformulario a un formulario con ajax en enviar
Eso fue muy interesante y funciona bien.
Necesito hacer lo mismo pero con un Subformulario. Quiero decir que cuando un usuario presiona un botón, llamo, a través de ajax, una acción que agrega, adjunta y muestra un subformulario a mi formulario existente.
Por ejemplo:
Tengo un formulario donde un usuario debe completar el nombre y el apellido de sus hijos, por lo que hay un botón "Agregar niño". Cuando el usuario presiona ese botón, se debe agregar un Subformulario a mi formulario existente y se debe mostrar. En el envío se validará exactamente como el ejemplo en ese artículo. La única diferencia es que allí solo agrega un solo campo. Necesito agregar un Subformulario, pero exactamente de la misma manera.
He intentado lo siguiente en mi acción (llamada por Ajax):
public function clonerecursivegroupAction()
{
$this->_helper->layout->disableLayout();
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('clonerecursivegroup', 'html')->initContext();
$id = $this->_getParam('id', null);
$subform1 = new Zend_Form_SubForm();
$Element1 = $subform1->createElement('text', 'text1');
$Element1->setLabel('text1')->setRequired(true);
$Element2 = $subform1->createElement('text', 'text2');
$Element2->setLabel('text2')->setRequired(false);
$subform1->addElement($Element1);
$subform1->addElement($Element2);
$this->view->field = $subform1->__toString();
}
Esto casi funciona.
La vista de esta acción devuelve el código html del Subformulario, por lo que cuando tenga éxito mi llamada ajax solo la mostraré.
El problema es que al enviarlo valida el formulario pero ha perdido el nuevo subformulario recién agregado. Eso no sucede en el artículo con solo un elemento. Creo que solo necesito agregar el Subformulario al Formulario existente, pero ¿cómo?
Hola Samuele debe comprobar la biblioteca de validación js para asegurar lo que hace, Como i saber que la mayoría de las bibliotecas añaden validación al formulario y al ID si añades un formulario diferente (Formulario dentro del formulario) No validará la forma completa –