Bonjour,
J'ai une simple question : Est-ce qu'il s'agit d'une bonne pratique que de faire une requête find('all') depuis l'appcontroller ?
Si je pose cette question c'est parce qu'il me faut avoir accès à une liste de "type de bien" qui sont enregistrés dans ma table "type_biens". Cette liste s'affichera sur le layout du site, plus précisément dans la zone de recherche.
Merci d'avance,
Non, ce n'est pas une chose à faire, c'est même déconseiller par Cake, pour plusieurs raisons :
Mauvaise Optimisation
Si cette variable n'est pas nécessaire dans un layout particulier (Par exemple l'administration), il va quand même faire la requête
Un Exemple de ce qu'il faut faire :
Dans TypeBiensController.php :
public function gettypes(){
$types = $this->TypeBien->find('all');
$this->set('typesBiens',$types);
}
Dans le layout :
<?php $typeBiens = $this->requestAction(array('controller'=>'typebiens','action'=>'gettypes')); ?>
à partir de la, dans la variables "$typeBiens", tu récupère la liste comme si tu était dans une action normale, donc tu peut y effectuer un foreach ...
Salut,
Je pense que le mieux, c'est de créer ton controller et un model associé a ta table "type_biens"
exemple :
TypeBiensController.php
et le model :
Typebien.php
Dans ton controller tu pourras faire $this->Typebien->find('all');
ou sinon dans un autre controller ( autre que appController ) mais tu devras dans ce cas préciser le Model utilisé avant de faire ta requête.
Controller::loadModel('tonModel');
En espérant t'avoir aider, bonne continuation
ps : vérifie le nom de fichier car je sais plus la rêgle avec un underscore ou change le nom de ta table
Je pense qu'il parle du fait de le récupérer dans le layout, le mieux est de faire ta fonction dans ton controller TypeBiensController.php puis dans le layout, de faire une requête :
$typeBiens = $this->requestAction(array('controller'=>'controller','action'=>'action'));
Merci de ta réponse @Yentia, mais comme le dit @matspider, je parlais du fait de pouvoir accéder à une valeur depuis le layout.
Hmm pour le moment, j'ai fait ceci :
Ma question est: Est-ce une bonne pratique ?
Merci @matspider pour ta réponse, j'ai mis cela en pratique et ça fonctionne parfaitement :)