Bonjour,

Actuellement je suis bloqué sur un point.
J'ai une partie de mon code qui est présent dans mal de vue de mon APP, pour éviter la répétition de ce code et si un jour je dois le modifier, éviter de modifier 30 fois le même code dans chaque vue, j'ai donc pensé à utiliser un helper.

Chose qui fonctionne bien jusqu'au moment où j'inclu une requête dans mon helper.

Donc ma question est : Comment je peux insérer une requête dans un helper ? Enfin si cela est possible ?

Merci d'avance.
Cordialement,

13 réponses


Bonsoir.
Que veux-tu dire par requête dans un Helper ?

Tchoupi
Auteur

Une requête en base de donnée via les paramètres de mon helper, du genre

$v = $this->User->find('all');
Tchoupi
Auteur

Je pense avoir trouvé la solution :

App::import("Model", "MonModel");  
            $model = new MonModel();  

Ce n'est pas un Helper.
Tu n'as jamais utilisé CakePHP avant ?

Tchoupi
Auteur

Hein ? Oui j'utilise déjà cake depuis quelque mois.
Qu'est ce que tu entends par : "Ce n'est pas un helper" ?

Ce qui s'utilise dans les vues ce sont principalement les Helpers, mais ce que tu montres (une requête SQL), ça s'utilise, soit depuis un controller, soit depuis un modèle.

Tchoupi
Auteur

Justement moi dans ma vue j'appel un helper et je voudrais justement faire appel à une requête SQL depuis mon helper.

Je dis peut être une bétise mais en utilisant les View Cell ?

Je dis peut être une bétise mais en utilisant les View Cell ?

Vu la syntaxe du code suivant :

$v = $this->User->find('all');

C'est pour la V2 et non pour la V3, donc ta proposition ne l'aidera pas et pour ma part, je ne l'aiderais pas à transgresser le but du système MVC avec CakePHP.
Faire une requête SQL depuis une vue est contraire au système du MVC, même via un Helper.

C'est pour la V2 et non pour la V3, donc ta proposition ne l'aidera pas et pour ma part, je ne l'aiderais pas à transgresser le but du système MVC avec CakePHP.

Effectivement, j'avais mal lu le code... Lendemain de soirée ^^
Sinon, je suis d'accord avec toi pour ne pas transgresser les règles !

Tchoupi
Auteur

Je ne demande à m'aider a transgresser les règles mais plutôt à me dire si ce que je souhaite faire est faisable d'une manière ou d'une autre.
mon problème est que dans ma vue j'ai un foreach et c'est dans ce foreach que je dois faire une requête.
En PHP normal c'est faisable, une requête dans le foreach et c'est bon. Mais avec le MVC je sais que c'est pas les règles, c'est pour ça que je viens vous demander.

Si en fait tu veux dire que tu veux utiliser une fonction d'un de tes controller dans plusieurs vues et que cette fonction renvoies les données que tu as besoin dans ces vues, tu peux utiliser le requestAction: Controller::requestAction.
Si c'est bien ça que tu veux dire, ce n'est pas une question de vouloir faire une requête SQL via un Helper, mais juste faire appel à une fonction d'un controller qui n'est pas liée avec la vue actuelle.
Pour te donner un exemple (qui est expliqué et introduit dans un des tutoriels de Grafikart).
Si tu veux afficher une sidebar qui liste les catégories d'un blog et qui apparaîtra sur plusieurs vues, tu crées une fonction dans un des controllers et tu pourras appeler cette fonction depuis n'importe quelle vue (même celles qui ne font pas partie du controller en question).

Tchoupi
Auteur

Je vais regarder le requestAction de plus près alors. Merci pour votre aide.