Redireccionamiento sin perdida de datos

Hola, les explico la situacion, tengo un formulario en el dibujo un par de listas desplegables y un boton asociado a ellas, cuando se seleccionan opciones de las listas y se presiona el boton, se van agregando los elementos a una tercer lista…

Esta tercer lista no esta dentro de ningun modelo las otras dos si (son catalogos), se supone que siempre debe haber al menos un elemento en la tercer lista (campo obligatorio), cada vez que se presiona el boton agregar se guarda en la bd en una tabla diferente a la pricipal del modelo del formulario; cuando se da guardar al formulario se validan los campos, pero esta tercer lista no sé como validarla de forma correcta, lo que he hecho hasta ahora es hacer un validate() del formulario completo y si se pasa la validacion checo en la bd si existe almenos un registro del campo obligatorio (de esta forma puedo identificar si estaba vacia al mandarse o no la tercer lista), el problema es que ahora nose como regresar al formulario con los datos que se modificaron si es que no se encontró ningun registro en la tabla de la bd, en este momento para regresar el formulario hago lo siguiente:




$this->redirect(array('update','id'=>$model->id_aplicacion));



Pero si se modifico algun dato se pierde y muestra los que estan en la bd, alguien sabe como puedo hacer para que esto no suceda?

Gracias.

Para no complicarme tanto la vida cambie el boton submit que tenía en el formulario por un boton normal y le puse un evento onclick donde valido antes esta lista y si todo esta como se espera mando el formulario con un submit()…

Saludos.

De todas maneras, lo que puedes hacer es algo así:

  1. En tu acción capturar el valor de esa lista al ser enviado el formulario por post y almacenarlo en una variable.

  2. En tu render al final de la acción haces una condición para verificar si esta variable almacena un valor (si es así, quiere decir que el formulario fue enviado y se había seleccionado algo en esa lista).

  3. Por último envías dicha variable a la vista, y desde ésta al _form.php, donde haces otra condición en la parte donde se genera la lista , indicándole si debería haber un item seleccionado, y cuál sería dicho item.

Ha probado con usar los States?


Yii::app()->user->setState('identificadordeguardado', $variabledelosdatos);

y para recuperar los datos:


$variabledelosdatos = Yii::app()->user->getState('identificadordeguardado');

Saludos y éxitos,

Ricardo