2010-11-29 22 views

Répondre

1

Créez simplement une vue pour l'en-tête et une vue pour le pied de page et crachez-les en haut et en bas de chaque page. Vous pouvez également créer une vue de modèle et la charger, puis prendre d'autres vues et les injecter dans la zone de contenu du modèle. De toute façon, vous obtiendrez où vous voulez être. Si vous voulez que cela se produise automatiquement, vous pouvez créer la vue de modèle dans le constructeur du contrôleur et l'enregistrer dans un membre de la classe de contrôleur. Ensuite, utilisez-le de telle sorte que $ this-> template soit le modèle.

+0

Voulez-vous dire que je dois ajouter load-> vue (« tête »)?> En haut de chaque point de vue? – roger

+0

Vous pourriez le faire au sommet de chaque vue majeure, oui. Mais pas tous les avis. Cependant, je disais au sommet de chaque méthode de contrôleur. – DampeS8N

+1

Si vous vous grattez la tête et pensez WTF, c'est du gaspillage !!! Alors CONGRATS !! vous êtes diplômé de l'université MVC! MVC est conçu pour rendre un site maintenable, pas facile à construire. Cela prend intentionnellement plus de temps pour tout faire. – DampeS8N

10

Vous pouvez créer une vue principale.

vues/master.php

$this->load->view('header'); 
echo $content; 
$this->load->view('footer'); 

Et puis créez un contrôleur de base avec une méthode pour rendre la vue principale. Le contenu de la sous-vue est chargé et transmis à la vue principale.

bibliothèques/MY_Controller.php

class MY_Controller extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function master_view($content_view, $data) 
    { 
     $data['content'] = $this->load->view($content_view, $data, true); 
     $this->load->view('master', $data); 
    } 
} 

étendons ce contrôleur de base et invoquez la méthode du contrôleur de base de vos méthodes d'action.

contrôleurs/items.php

class Items extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $data['items'] = $this->item_model->get_items(); 
     $this->master_view('items/index', $data); 
    } 
} 

Il a tendance à être plus sec que le chargement de la tête et pied de page dans chaque vue.

+0

'items/index' est la fonction index() dans le droit de contrôleur Items? Je suis confus, ce serait un appel récursif. –

0

Tout comme ci-dessus, je le fais comme ceci:

$this->data['content']='your_content_view'; 
$this->load->vars($this->data); 
$this->load->view('template'); 

Puis dans la vue du modèle:

$this->load->view('header'); 
$this->load->view($content); 
$this->load->view('footer'); 

Les vues peuvent charger d'autres vues, de sorte que le point de vue du modèle charge une vue d'en-tête, puis la vue que vous spécifiez dans le contenu, puis la vue de pied de page.

En utilisant cette idée que vous pouvez charger des vues sidebar dans le contenu, etc.