Problema con caches

edited octubre 2008 in Dudas/Problemas
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

  • edited 4:14
    Hola de nuevo,

    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
  • edited 4:14
    En el controlador existe un metodo llamado set_persistance

    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
  • edited 4:14
    Seguro que la persistencia tiene sus ventajas aunque en el proyecto en el que trabajo por ahora no me conviene demasiado ya que pierdo en cuanto a desempeño.

    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;
    class UnoController extends ApplicationController{
      public function a{
         $this-&gt;set_persistance(false);
         &#46;&#46;&#46;
      }
    }
    
    class DosController extends ApplicationController{
      public function b{
         $this-&gt;set_persistance(false);
         &#46;&#46;&#46;
      }
    }
    

    también asignando el atributo protected
    class UnoController extends ApplicationController{
    protected $persistance = false;
    &#46;&#46;&#46;
    }
    
    class DosController extends ApplicationController{
    protected $persistance = false;
    &#46;&#46;&#46;
    }
    

    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!
  • lo ideal seria que coloques null esos valores al momento de ejecutar el accion del controller... aunq seria bueno que utilices la versión 0.5 de kumbia
Sign In or Register to comment.