Salut à tous,
je sais ma question est stupide mais j'ai longtemps cherché.
voila j'ai mon layout qui contients une portion de code dynamique comme ceci :

<?php 

             echo $this->element('zonedroiteinformation',array(), array('cache' => false));

             ?>

j'ai créer un element nommé : zonedroiteinformation dans App/vew/Element/zonedroiteinformation.ctp.
j'aimerai à partir de mon controller utiliser une action pour rempli mon élement donc qua chaque fois que l'action defaultinformation() mon controller PagesController est appelé que le contenu de l'element zonedroiteinformation soit rendu aussi
est possible? si oui comment

7 réponses


Bonjour.
Regardes du côté du requestAction.

romses
Auteur

merci déja j'avais déjà regardé de ce coté et voici ce que jai mis sur pied:
dans mon controleur Pages j'ai cette action

public function membre_zoneinfo()
        {
            if(empty($this->request->params['requested']))
            {
                throw new ForbiddenException();

            }

            $affiche = "zone de travail";
            return $affiche;
        }

dans le vue membre_zoneinfo.ctp, j'ai mis ceci :

<?php

             echo $this->element('zonedroiteinformation',array(), array('cache' => false));
?>

et enfin dans le contenu de l'élement app/vew/Element/zonedroiteinformation.ctp,
j'ai fait ceci:

<?php

    $resp = $this->requestAction(array('controller' => 'Pages', 'action' => 'membre_zoneinfo'));
    echo $resp;

 ?>

cela s'affiche bien sauf que c'est sur toutes les vues or je veus que cela soit juste pour la vue zoneinfo, aussi un autre inconvenient lorsque je fait les modifications il faut patienté plusieurs heures voir des jours pour que la modification puisse être pris en compte

cela s'affiche bien sauf que c'est sur toutes les vues or je veus que cela soit juste pour la vue zoneinfo

Si tu n'inclues ton élément que dans la vue zoneinfo comme c'est le cas là, je ne vois pas pourquoi l'élément s'afficherait sur d'autres vues.

romses
Auteur

en effet lorsque je parcours d'autre vue ayant le même layout, j'ai toujours mon elément affiché et aussi un autre soucis
le temps pour que les modifications soient pris en compte sont grandes j'ai comme l'impression que les données sont stockés en cahe pour une durée importante mais quand je supprime les donnée mis en cache, rien ne se passe les modifications n'ont pas été pris en compte

Ce que tu dis actuellement, n'est pas du tout en accord avec ce que tu notifies et donnes comme code.

dans le vue membre_zoneinfo.ctp, j'ai mis ceci :

<?php
             echo $this->element('zonedroiteinformation',array(), array('cache' => false));
?>

Il faudrait savoir ce que tu dis, d'ailleurs, pour solutionner ce que tu dis, il te suffit de faire comme tu as montré en exposant ton code (comme-ci dessus).

romses
Auteur

merci Lartak, j'ai comme l'impression qu'on ne se comprends pas en effet que je mette cache=>true la vue est toujours affiché et quelqu'en soit l'action executée. et si je change la valeur de ma variable $affiche = "zone de travail"; par $affiche = "nouvelle zone de travail"; les modifications ne seront pas pris en compte immédiatement il va faloir patienté des heures pour voir les modifications

Tu veux trop de choses à la fois, tu devrais les régler l'une après l'autre.
Je te parle du fait que tu montres ton code en disant que tu inclus l'élément depuis une vue et juste après tu dis que tu l'inclus dans ton layout.
Je te dis donc qu'il faut que tu fasses l'inclusion de l'élément seulement dans la vue souhaitée et toi tu me dis que nous ne nous comprenons pas, en me parlant du cache.
Et puis, c'est normal, si tu définies ton cache à true dans ton élément, il sera mis en cache.
Vas supprimer le fichier correspondant à l'élément dans le dossier des caches de ton application après avoir fait ce que je t'ai dit, et ça devrait régler les choses (sans oublier d'enlever true pour le cache de l'élément).
D'ailleurs, si tu ne définies rien pour l'élément, que tu mets juste :

<?php
             echo $this->element('zonedroiteinformation');
?>

L'élément ne sera pas mis en cache, étant donné que la valeur par défaut du cache, est false.