Buenos dias,
Tengo un formulario con una serie de opciones las cuales se pueden marcar o desmarcar con un checkbox.
Cuando se guarda, se borran todas las opciones de ese usuario y en caso de que haya marcado nuevas se insertan.
Hasta ahi todo bien, el problema viene que me cachea los checkbox, entonces despues de guardar y borrar todas las opciones, vuelvo a entrar a ver los datos del usuario y sigen marcados los checkbox.
Estoy trabajando con la version 0.5
He probado a ponerle la cache_layout a 0 minutos, pero tampoco ha funcionado.
¿Existe algun tipo de funcion o metodo para evitar que cachee el formulario?
un saludo
Comentarios
Perdon por el fallo, pero el problema no es de la cache de la vista, es de la persistencia de los objetos.
Pensaba que la persistencia solo se aplicaba al active record y siempre y cuando se indicara.
En este caso, tengo que inicializar la variable $this->activos = false, para borrar los datos anteriores.
Os copio el codigo
CONTROLADOR
$this->activos = false;
//Busco cuales tiene activos
$Modsucur = new modsucur();
foreach($Modsucur->find("conditions: sucursales_id = $id_sucursal") as $activo){
$this->activos[$activo->modalidades_id] = $activo->modalidades_id;
}
//Hacemos un merge de los 2 arrays
foreach($this->modalidad as $value){
$this->mod[$value->id]["id"] = $value->id;
$this->mod[$value->id]["nombre"] = $value->nombre;
if (array_key_exists($value->id, $this->activos)) {
$this->mod[$value->id]["check"] = true;
}else{
$this->mod[$value->id]["check"] = false;
}
}
VIEW
<table width="100%">
<? foreach($mod as $value): ?>
<td><? if($value["check"] == true): ?>
<?= checkbox_field_tag("modalidades[]", "value: ".$value["id"], "checked: true"); ?>
<? else: ?>
<?= checkbox_field_tag("modalidades[]", "value: ".$value["id"]);?>
<? endif; ?>
<?= $value["nombre"];?></td>
<?= tr_break(2) ?>
<? endforeach; ?>
</table>
Con esto estamos modificando una de las ventajas de php, que no hay que destruir ni objetos ni variables, ya que el propio php se encarga de ello.
No se puede deshabilitar la persistencia??
Si me equivoco que algien me corriga.
Un saludo a todos
Se usa asi
$this->set_persistance(false);
Asimismo puedes definirlo como atributo, de la siguiente manera
protected $persistance = false;
Te comento que aun no he utilizado esta caracteristica, la persistencia es muy buena, una vez que te acostumbras.
Cualquier cosa avisas
Según leí en el post anterior las variables solo son persistentes a nivel controlador... pues al pasar de un controlador1 al controlador2 en mi aplicación se mantienen los valores de las variables.
Ya intente usando el metodo set_persistence;
también asignando el atributo protected
y nada de nada, me sigue manteniendo los valores de mi variable... alguna idea? alguien ha tenido algún problema similar?
estoy usando la versión 0.4.7
de antemano muchas gracias
Saludox!