Hola comunidad
espero me puedan dar una mano en esto ya que estoy en mis comienzos con todo esto
(un ejemplo o algún post que lo trate)
les comento
tengo una tabla con muchos campos,
pero no todos ellos son requeridos(obligatorios)
ésto lo determina un campo que es tipoCarga
si tipoCarga = 1
cargo campo 1 y 2
sinosi tipoCarga=2
cargo campo 3 y 4
etc
lo que pienso hacer es definir distintos escenarios para cada tipo de carga
y asi solo validar los campos correspondientes
mi problema pasa por la vista
supongo que tengo que usar ajax para cada vez que el usuario
seleccione (dropDownList) tipoCarga yo "envie" ese dato al controlador
y me haga un renderParcial de los datos correspondientes
ahora…
no se como hacerlo !
un ejemplo me vendría muy bien!!!!!
saludos y gracias
sebas
(Sebathi)
June 3, 2010, 8:08pm
2
porque no probas de poner una función sobre el evento onchange de el combo y cuando cambia verificas y mostras o desmostras con JQuery.
Si tenés dos divs con adentro lo que querés mostrar:
if ($("combo").val()==3){
$("#div1").show();
$("#div2").hide();
}else{
$("#div1").hide();
$("#div2").show();
}
Supongo que la validacion la quieres hacer del lado del servidor… Otra idea entonces no te serviria hacer un CFormModel para escenario en el cual puedas especificar los campos requeridos… y para validar utilices el metodo validate ??
cyberpol
(Cyberpol 777)
June 3, 2010, 8:35pm
4
Otra forma,
declara dos propiedades mas del modelo:
$campo_A
$campo_B
En el formulario haces que la entrada de los datos vaya a parar a esos campos,es decir renderizas SIEMRPE, esos campos (te olvidas del ajax dependiendo de la seleccion)
Luego, cuando guardas los datos, verificas el tipoCarga, si es 1, entonces pones
$campo1 = $campoA
$campo2 = $campoB
si en cambio es 2, pones
$campo3 = $campoA
$campo4 = $campoB
Despues, con scenario haces las validaciones…
Lo mismo harias para mostrar los datos (pero al reves obviamente)
Me explico?
Lo puedo hacer más detallado pero seria muy extenso
Hola!! gracias por las respuestas
Replanteo el problema, porque me olvide de un tema NO menor:
si tipoCarga=1
muestro
[b]campo1[/b] y campo2
sinosi tipoCarga=2
muestro
campo1 ,campo3 y campo4
nota: * no siempre son la misma cantidad de campos
* un campo puede estar en varios escenarios
pero a su vez, uno de estos campos puede ser opcional (dependiendo del escenario)
por eso al hacer el renderParcial y usar CHtml::activeLabelEx debería tener el escenario seteado
para que me dibuje el [color="#FF0000 "]*[/color] (de requerido) o no
yo usaría getSafeAttributeNames, para mostrar los campos
por eso creería que necesito ajax, porque tengo que cambiar el escenario y luego mostrar nuevamente los campos
saludos y gracias
Hola comunidad
les dejo lo que hice, se aceptan correcciones, soy nuevo en esto
tengo un campo "scenario" que me determina el escenario en el que estoy trabajando
a través de ajax hago un render parcial de los campos cada vez que se modifica el escenario
en mi ejemplo se definen 3 escenarios donde
en el escenario1 el campo 1 y 2 son requeridos
en el escenario2 el campo 1 y 3 son requeridos
en el escenario3 el campo 2 es requerido y el campo 3 no es requerido, pero es parte del escenario
creo la tabla en la base
CREATE TABLE IF NOT EXISTS `tbl_table` (
`id` int(11) NOT NULL auto_increment,
`scenario` int(11) NOT NULL,
`field1` int(11) default NULL,
`field2` int(11) default NULL,
`field3` int(11) default NULL,
PRIMARY KEY (`id`)
);
Uso el shell para crear el modelo y crud para los form
y despues modifique _form.php, el controlador y el modelo
adjunto los fuentes
[edit]
me había faltado ocultar nos campos no seguros
Aca les dejo un ejemplo de lo que hice
[color="#FF0000 "]lo barato sale caro, este sitio esta INFECTADO!!![/color]
http://hsegura.mihost.eu/pruebaAjax/index.php?r=table/admin
saludos, espero les sirva a los newbie