Generar Campos Dinamicamente En Formulario En Yii Framework

Hola tengo una cosa que me obstaculiza es esta: tengo mi formulario hecho con gii y todo me funciona muy bien pero como haria usando un ajax button haga que cada vez que le haga click me genere un nuevo campo un textField por ejemplo. Osea cada vez que haga click a mi ajaxButton me genere un nuevo campo y si le hago otra vez click tenga otro campo y asi sucesivamente si tienen otras ideas o ejemplos son bienvenidos.gracias de antemano.

Este proceso se debe hacer inevitablemete con JS (puede ser mezclado con Ajax según necesidades).

Ud debe crear una plantilla con el código HTML que necesita para cada campo y guardar eso en una variable de JS, luego cada vez que haga click en el botón agregar, desde JS escribe la plantilla en un tag que haya definido previamente para eso.

Así un HTMLp ara ese proposito quedaría algo así:




<div class="campos">

  <div class="campo">....</div>

  <div class="campo">...</div>

  <div class="nuevoCampo">//Acá agregará el código cada vez que haga click en "Agregar"</div>

</div>



Saludos.

Hola la idea esta genial pero no soy tan experto en la parte usar js en yii podrias poner un ejemplo aunq pekeño para q lo entienda mejor xfaaaa gracias por tu respuesta

Hola tal vez sea algo facil pero no puedo entender bien esta parte de tu respuesta

" desde JS escribe la plantilla en un tag que haya definido previamente para eso."

ejejej ya lo entendi ahora la duda es la siguiente una vez q hago click aparece el nuevo campo pero al segundo click no pasa nada hay algun modo de controlar el numero de click q se hace para poder poner mas campos? cual seria la forma? gracias

<script type="text/javascript">

    var contador=0;





    function campoDinamico(){








        var Html = document.getElementById('prueba').innerHTML;


        if(contador==0)


        {








        document.getElementById('nuevo').innerHTML = Html;


        }


        contador++;


    else


        {


            if(contador==1)


                document.getElementById('nuevo1').innerHTML = 'SegundoClick';


        }


         }








&lt;/script&gt;

Cuando no esta el else al hacer click genera el nuevo campo a <div id= "nuevo"></div> y loq kiero es que tambien genere el campo a <div id="nuevo1"></div> pero cuando le aumento el else para que aumente el segundo campo no me genera nada ni el primero ni el segundo todo se arruina es raro o no lo estoy haciendo bien Sabes cual podria ser mi error?

porque se genera un nuevo elemento con el mismo id. Al duplicar un id javascript falla.

Tienes que duplicar y modificar el id para que sea único.

jejejejeje conq era asi de simple? pero no lo sabia graciassssss me salvaste la vida

Hola de nuevo los campos se generan muy bien por cada click pero ahora q kiero hacer click al boton de submit y dejo un campo vacio para ver la validacion de formulario los campos nuevos generados dinamicamente desaparecen como haria para que eso no ocurra? osea al darme un error de validacion por tener un campo en blanco se mantengan tb los campos generados dinamicamente gracias de antemano yyyyyyyyyyyyyy tb me di cuenta que los textField cuando da error de validacion de formulario mantienen sus datos escritos eso esta bien para no volver a escribirlos pero eso no ocurre con los fileFields xq? deq manera hago para q tb en los fileFields se mantengan los nombres de los archivos q invoke al darme error de validacion?

crea los campos dinamicamente pero como un array, la base es esta enlace, fijate que la validacion se hace para los n elementos, y al formar el formulario ya no recibes un elemento sino un array de elementos. (Si mantienes la estructura de array la validación también se mantiene parea cada elemento)

Y mira por donde hoy alguien a puesto una extensión sobre esto y parece buena extensión, mira la demo.

La extension esta genial!!! pero como capturaria cada dato en una nueva instancia de un modelo el enlace de arriba ya lo vi pero nom funciona por que no le entiendo bien sera xq soy nuevo en yii framework he buscado otras opciones pero nada solo hay ese enlace y sinceramente no lo entiendo

Loq menos entiendo es esto

<?php foreach($items as $i=>$item): ?>

<tr>

<td><?php echo CHtml::activeTextField($item,"[$i]name"); ?></td>

<td><?php echo CHtml::activeTextField($item,"[$i]price"); ?></td>

<td><?php echo CHtml::activeTextField($item,"[$i]count"); ?></td>

<td><?php echo CHtml::activeTextArea($item,"[$i]description"); ?></td>

</tr>

en especial :

[$i]name" ?????????????????????????????????????????