Welcome to the Cookbook

loading...

3.5.4.2 $components, $helpers et $uses

Les autres attributs les plus souvent utilisés permettent d'indiquer à CakePHP quels assistants (helpers), composants (components) et modèles vous utiliserez avec le contrôleur courant. Utiliser ces attributs rend ces classes MVC, fournies par $components et $uses, disponibles pour le contrôleur, sous la forme de variables de classe ($this->NomModele, par exemple) et celles fournies par $helpers, disponibles pour la vue comme une variable référence à l'objet ($nomassistant).

Chaque contrôleur a déjà accès, par défaut, à certaines de ces classes, donc vous n'avez pas besoin de les redéfinir.

Les contrôleurs ont accès par défaut à leur modèle primaire respectif. Notre contrôleur Recettes aura donc accès à son modèle Recette, disponible via $this->Recette, et notre contrôleur Produits proposera un accès à son modèle via $this->Produit.Cependant, quand vous autorisez un contrôleur à accéder à d'autres modèles via la variable $uses, le nom du modèle primaire du contrôleur courant doit également être inclus. Ceci est illustré dans l'exemple ci-dessous.

Les assistants (Helpers) Html et Session sont toujours accessibles par défaut, tout comme le composant Session (SessionComponent). Mais si vous choisissez de définir votre propre tableau $helpers dans AppController, assurez-vous d'y inclure Html et Form si vous voulez qu'ils soient toujours disponibles par défaut dans vos propres contrôleurs. Pour en savoir plus au sujet de ces classes, assurez-vous de regarder leurs sections respectives plus loin dans le manuel.

Jetons maintenant un œil sur la façon d'indiquer à CakePHP que vous avez dans l'idée d'utiliser d'autres classes MVC :

<?php

class RecettesController extends AppController {
    var $name = 'Recettes';
    var $uses = array('Recette', 'Utilisateur');
    var $helpers = array('Ajax');
    var $components = array('Email');
}

?>   
  1. <?php
  2. class RecettesController extends AppController {
  3. var $name = 'Recettes';
  4. var $uses = array('Recette', 'Utilisateur');
  5. var $helpers = array('Ajax');
  6. var $components = array('Email');
  7. }
  8. ?>

Toutes ces variables sont fusionnées (merged) avec leurs valeurs héritées, par conséquent ce n'est pas nécessaire de re-déclarer (par exemple) le helper Form ou tout autre déclaré dans votre contrôleur App.

Si vous ne souhaitez pas utiliser un modèle dans votre contrôleur, indiquez var $uses = null ou var $uses = array(). Ceci vous permettra d'utiliser un contrôleur sans la nécessité d'un fichier de modèle correspondant.

Il n'est pas conseillé d'ajouter tous les modèles systématiquement à votre contrôleur via le tableau $uses. Allez regarder ici et ici pour voir comment accéder proprement aux modèles respectivement associés ou pas.