J'ai mis en page, rien de spécial, trois colonnes, juste pour apprendre CakePHP. Dans la documentation, je n'ai rien trouvé à propos de ce cas.CakePHP: Mise en page, variables et question
J'ai obtenu des statistiques dans les barres latérales, si je les envoie au fichier layout (default.ctp) car elles sont affichées sur chaque page.
Je construis (grâce à un utilisateur ici) un composant:
class SidebarComponent extends object {
function startup(&$controller) {
$this->controller = $controller; // Stores reference Controller in the component
}
function count_articles() {
$articles = ClassRegistry::init('Articles')->count_articles();
$this->controller->set(compact('articles'));
}
}
Tout fonctionne parfaitement. J'ai eu une question sur ma technique. Je avais besoin de charger méthode des composants dans le contrôleur en mettant:
$this->Sidebar->count_articles();
ai donc décidé de le rendre un peu plus courte, parce que je vais devoir mettre dans chaque contrôleur. Donc, j'ai créé la fonction du nouveau composant:
function sidebars($userid) {
return array(
$this->top_articles(),
$this->random_article()
);
}
Et j'initialiser dans le contrôleur de cette façon:
$this->Sidebar->sidebars();
Tout fonctionne correctement, j'ai besoin que des conseils/commentaires si c'est bon comme je le fais:
Merci pour votre temps.
Hm ... ne pense pas que cela. Des échantillons de code? :) – Johannes
jetez un oeil à http://book.cakephp.org/view/64/Creating-Components#MVC-Class-Access-Within-Components-65. Fondamentalement, vous pouvez déplacer startup() de votre exemple à initialize(), et sidebars() à startup(). Attention aux paramètres, bien sûr. exemple - http://bin.cakephp.org/view/1135878647. – parserr