2010-01-17 2 views
0

Pouvez-vous me dire comment utiliser un contrôleur pour la page d'accueil parce que je suis en train de mettre en home.ctp (vue page d'accueil) les données d'un modèle avec <?php $this->user->find() ?> mais il retourneFaire un contrôleur pour la page d'accueil

Avis (8): Undefined property: Voir :: $ user [vues APP \ \ pages \ home.ctp, ligne 1]

Répondre

0

Vous devriez consulter le livre de cuisine; il a quelques tutoriels CakePHP solides, à http://book.cakephp.org/

Vous avez pas vraiment fourni beaucoup d'informations, mais je pense votre contrôleur uses un modèle « utilisateur », et vous mettez $this->user->find() à votre avis, quand il devrait être dans votre contrôleur. Dans l'action de votre contrôleur, vous aurez envie/besoin de faire quelque chose comme ça ...

Users_Controller extends AppController { 
    function index() { 
     $arrayOfUsers = $this->User->find(...); 
     $this->set('users', $arrayOfUsers); 
    } 
} 

Vous pouvez alors - dans votre vue - accès « utilisateurs » comme ceci:

pre($users); 

... puisque vous avez utilisé la méthode de contrôleur set() pour envoyer une variable $users à la vue.

+1

Cela doit être UsersController (pas de caractère de soulignement) et la fonction de débogage est pr() not pre() – duckyflip

+0

Haha, ya, c'est mon mauvais. Quand je travaille en PHP sans Cake, je définis toujours ma propre version de pr que j'appelle pre car j'aime que les noms de fonctions aient au moins une voyelle :) –

0

Tout ce que vous devez faire est de créer un nouveau contrôleur si c'est le direction que vous voulez aller. Si c'est la seule déclaration que vous avez qui nécessite un accès aux données, il peut être utile de faire semblant dans cette seule méthode du PagesController. Par exemple, l'une des pages d'accueil de mes projets est à 99% statique, sauf pour la liste des événements en vedette. Plutôt que de se déplacer tout vers un nouveau contrôleur ou même charger mon modèle Event pour l'ensemble PagesController (où il n'est pas nécessaire), je viens juste appliqué cette solution dans PagesController::home():

$attractions = ClassRegistry::init ('Attraction')->featured (10); 

Fonctionne très bien. Cependant, si votre page est plus dynamique que la mienne, il peut s'avérer utile de router votre page d'accueil via un autre contrôleur (plus proche des données affichées).

0

Le contrôleur par défaut de la page d'accueil i.e home.ctp est situé dans /cake/libs/controller/pages_controller.php. Ce contrôleur peut être surchargé en plaçant une copie dans le répertoire controllers de votre application sous /app/controllers/pages_controller.php. Vous pouvez ensuite modifier ce contrôleur comme vous le souhaitez, utilisez des modèles, injectez des variables à utiliser dans la page d'accueil, etc.

Questions connexes