Inserción De Varios Objetos Similares De Una Vez En Un Formulario

Hola.

Este es mi primer post, después de llevar poco tiempo trabajando con Yii.

Tengo una aplicación que nos permite crear documentos Solicitud que puede tener varios Solicitantes. Tengo una tabla asociativa SolicitudSolicitantes con una relación MANY a MANY.

Mi "problema" es a la hora de crear la Solicitud. No se cómo hacer para que se puedan introducir los datos de varios solicitantes en un único formulario. Lo he intentado con JRelCopy, clonando los campos. Pero tengo el problema de que los Solicitantes tienen dos dropDownList, Provincia y Localidad, dependiente una de la otra y al hacer la clonación no consigo meter el código para actualizar dinamicamente Localidad al cambiar el valor de Provincia.

Ahora mismo lo que hago es insertar los Solicitantes uno a uno, y en el formulario de creación de Solicitud, muestro en un CGridView los datos de TODOS los Solicitantes y selecciono los que me interesan. Este sistema si hay muchos es una locura.

Había pensado en hacer alguna inserción en una tabla temporal de Solicitantes con un formulario que se lance en una nueva ventana desde el formulario de Solicitudes, pero no se si será factible.

¿Me podéis indicar alguna manera de realizar esto?

Gracias.

Buenas.

Yo lo que hago en estos casos es añadir un tab con por ejemplo 2 pestañas:

1- datos básicos.

2- asignar solicitantes.

En el tab de asignar solicitantes añades los controles de formulario q necesites y un botón AJAX. Además, añades un CGridView vacío que se irá llenando con los datos que vayamos añadiendo.

Este botón AJAX irá a un action que irá rellenando un "state" de usuario, con lo que por ejemplo tendremos un array de solicitantes añadidos en un "state" (Yii:.app()->user->hasState()/getState()/setState()…).

En el sucess del botón AJAX actualizamos el CGridview. Llenamos el dataProvider del CGridView con los datos del "state" de solicitantes.

Y cuando pulsemos el botón de guardar recogemos este "state" y lo guardamos en la base de datos.

Un saludo.

Muchas gracias. Lo que estoy probando es insertar un Solicitante en el formulario principal y luego en la vista de la Solicitud, con un widget CJuiDialog añado un botón que permite añadir un nuevo Solicitante.

hola, para eso es el CFormModel. Un ejemplo de CFormModel lo tienes en protected/models/ContactForm.php. La logica tras el uso de MVC es que mediante un "modelo de formulario" pidas todo aquello que se requiera para luego insertar objetos persistentes. El problema está en cómo estas viendo el sistema hecho con yii: en donde piensas que "modelo es igual a tabla" y eso no es así siempre. Simplemente, creas un formulario basado en CFormModel, con sus reglas de validación y todo, luego, una controladora para despluegar ese formulario y recibir el "submit" de parte del usuario, tras validacion entonces y con ayuda de una transaccion creas todos los registros necesarios.

Buenas.

Peor como persistes varios modelos de solicitantes (sean active record o no) antes de hacer el submit?

En mi caso utilizo active record para solicitantes pq es más "fácil" recuperar los datos POST en el controlador. Creo q es indiferente la utilización de form model o active record en este caso, ya q realmente existen las tablas. La forma de persistir los datos mediante states sí puede no ser la más correcta, pero no se me ocurre otra más eficiente.

Un saludo.