2010-07-21 5 views
1

J'utilise cakePHP 1.26.
Dans un contrôleur, je me suis fonction:Une question à propos du composant Set() dans cakePHP

function testing(){ 
$userinfo=$this->Test->findAllByuser_id(); 
$this->set('userinfo',$userinfo); 
} 

Je founf que la variable « userinfo » qui contenait des données du tableau était accessible dans le testing.ctp.
pour rendre la variable « userinfo » accessible à d'autres fichiers .ctp, je fait usage de cette aide:

$this->Session->write('userinfo', $userinfo);  

Et pourtant, je ne sais pas comment ça se fait la variable définie par la fonction Set() peut » t être accessible par d'autres fichiers .ctp mais la session peut.
est-il une meilleure façon de faire la même chose en utilisant une autre méthode au lieu d'utiliser Session?
S'il vous plaît aviser.

Répondre

1

Vous pouvez également encapsuler la fonction dans le modèle.

Dans le modèle utilisateur

function getUserinfo($id) 
{ 
    return $this->findByUser_id($id); 
} 

Ensuite, vous l'appelez dans un autre contrôleur avec l'initialisation du modèle utilisateur

/*in another controller*/ 
function someAction($uid) 
{ 
    $this->User = ClassRegistry::init("User"); // or you can use `$uses = array('User');` 
    $this->set("userinfo",$this->User->getUserInfo($uid)); 
} 
2

De manière générale, chaque méthode d'un automate communique uniquement avec sa vue (c'est-à-dire le fichier ctp situé dans le dossier nommé en fonction du nom du contrôleur et nommé en fonction du nom de la méthode). Si ce contrôleur est nommé Tests, les variables set() dans sa méthode testing() seront uniquement disponibles pour le fichier ctp identifié comme views/tests/testing.ctp.

Pour rendre cette information disponible ailleurs, vous devez soit la persister - comme vous le faites dans la session - ou exécuter le contrôleur par une méthode "externe" comme requestAction(). Pour commencer, il suffit de comprendre qu'une méthode donnée d'un contrôleur s'aligne directement sur une et une seule vue (encore une fois, au risque de simplifier à l'extrême).