Bonjour à tous,

J'ai un petit problème. Je me met à cakePHP et je regarde donc pas mal de tutoriels mais il y a une question qui reste sans réponse jusque là.

Dans le site que je développe, j'ai comme souvent un menu, un petit profil de l'utilisateur, et des stats, tout ça apparait sur la Home page. Le problème c'est que ma page est reliée à un contrôleur. Donc sur une page spécifique sur imaginons un MessagesController il faut que je fasse appel à d'autres actions de différents contrôleurs.

Et dans ce cas je sais pas trop comment m'y pendre, est ce que je fait appel à une action directement dans le template ? Et dans ce cas quelle fonction je doit utiliser ?

Ou est-ce qu'il faut plutôt créer les actions commune dans l'AppController ?

Qu'est ce qui est le plus propre et qu'est ce qui se fait généralement ?

En vous remerciant.

Bryan

(Je suis sur CakePHP 2)

6 réponses


Kareylo
Réponse acceptée

Il , n'y a pas de façons correctes de faire ce qu'il te faut, à partir du moment que ça te convient, ce sera la bonne façon pour toi.

Tu peux aussi faire des elements que tu importes dans les vues qui en ont besoin. Dans ton controller, tu n'auras plus qu'à refaire la requête pour récupérer les informations.
Au final, ça va réduire ton code mais ça sera pas forcément ce qu'il te faut.

Il te suffit de charger le model voulu dans ton controller de la façon suivante :

$this->loadModel('Model');

Tu peux aussi utiliser

$this->requestAction('lien/vers/ton/action');
bryou16
Auteur

Merci pour la réponse.

Alors je suis pas certain d'avoir tout compris. J'ai essayé et du coup je me rend compte que ça fonctionne seulement si je fait un return de ma requete dans l'action et qu'ensuite dans la vue je fasse

$tableau = $this->requestAction('lien/vers/ton/action');
foreach ..

Mais comme dans mon action je défini les variables de la vue avec un set je voudrais garder ce système. Et quand je fait un requestAction mes variable ne sont pas défini dans la vue.

C'est normal ? Et dans ce cas la seule alternative est de retourner la requete ?

Pour ce qui est du chargement du modèle j'ai pas l'impression d'en avoir besoin si je peux appeler directement l'action, non ?

Désolé, je débute sur CakePHP et c'est la première fois que j'utilise un Framework.

Etant donné que tu fais un système de statistiques sur une page, je te conseille plus de charger les différents models dont tu as besoin et de faire tes finds.
Tu peux ensuite faire tes stats plus facilement.

bryou16
Auteur

Bonjour,

Je prend l'exemple des stats mais c'est pas forcément pour ça. Disons que j'ai plusieurs actions de plusieurs contrôleurs à afficher sur les pages du site et pour l'instant j'ai mis les actions dans AppController>index. Est ce que c'est une façon de faire correct ?

Je veux que ce soit fait correctement et si il y a une procédure un peu plus adapté je veux bien la connaître :)

bryou16
Auteur

D'accord, ce qui m'embête dans cette façon de faire c'est de recopier les requêtes dans tous les controllers.

J'ai mis les requetes communes dans le beforefilter de l'AppController. C'est ce qui me semble le moins contraignant.

Merci pour t'es réponses.