Je suis à la recherche d'un moyen simple d'afficher toujours le même en-tête et pied de page tout en désactivant la zone de contenu principale. Je ne suis pas sûr de savoir comment y parvenir avec MVC.En-tête et pied de page séparés avec MVC Codeigniter
Répondre
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.
Essayez modulaire Seperation: http://codeigniter.com/forums/viewthread/121820/
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.
'items/index' est la fonction index() dans le droit de contrôleur Items? Je suis confus, ce serait un appel récursif. –
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.
Voulez-vous dire que je dois ajouter load-> vue (« tête »)?> En haut de chaque point de vue? – roger
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
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