2010-11-03 9 views
2

Je me demande soudainement .. pour la page d'accueil qui pointe vers le contrôleur => pages action => affichage et accueil ... où puis-je écrire la logique du contrôleur?Cakephp Home Page logique

Répondre

5

Dans le PagesController (que vous pouvez copier à partir de cake/libs/controller). Ou vous pouvez changer l'itinéraire pour que "/" pointe vers un contrôleur/action de votre choix.

+0

puis-je placer une page contrôleur dans l'application/contrôleur? Le contrôleur de pages peut-il avoir des actions? –

+3

@Harsha Le contrôleur de pages n'a rien de spécial. Regardez-le dans 'cake/libs/controller/pages_controller.php'. Placez votre propre 'pages_controller.php' dans' app/controllers' pour le remplacer par votre propre version, qui peut faire tout ce qu'un contrôleur normal peut faire. – deceze

+0

awesome: D mais j'ai quelques pages dans le dossier views/pages. donc je vais devoir passer aux vues/pages à droite? –

2

@dhofstet: Merci!

Maintenant, je peux accéder à ma page d'accueil

Router::connect('/', array('controller' => 'pages', 'action' => 'home')); 

sans être connecté

Ceci est mon app/controllers/pages_controller.php:.

<?php 
class PagesController extends AppController { 
    var $name = 'Pages'; 
    var $helpers = array('Html', 'Session'); 
    var $uses = array(); 

    function beforeFilter() { 
     parent::beforeFilter(); 
     $this->Auth->allow('home'); 
    } 

    function home() { 
    } 

    function display() { 
     $path = func_get_args(); 

     $count = count($path); 
     if (!$count) { 
      $this->redirect('/'); 
     } 
     $page = $subpage = $title_for_layout = null; 

     if (!empty($path[0])) { 
      $page = $path[0]; 
     } 
     if (!empty($path[1])) { 
      $subpage = $path[1]; 
     } 
     if (!empty($path[$count - 1])) { 
      $title_for_layout = Inflector::humanize($path[$count - 1]); 
     } 
     $this->set(compact('page', 'subpage', 'title_for_layout')); 
     $this->render(implode('/', $path)); 
    } 
} 
?>