2010-12-03 10 views
3

Je suis très nouveau à CodeIgniter, mais je pense que j'ai une compréhension de la façon dont cela fonctionne.CodeIgniter en-tête commun Inclure

Généralement quand je fais un site Web, comme un site de 5 pages, mon fichier d'en-tête est inclus dans un fichier php qui est inclus dans chaque page, de sorte que si je dois modifier l'en-tête je dois le faire un endroit plutôt que de le changer cinq fois.

Dans mon application CodeIgniter, j'ai une fonction pour chaque page de mon contrôleur qui charge une vue différente, selon la fonction. Par exemple,

public function Index() { 

    $data = array(); 
    $this->load->view('index',$data); 

} 

public function blog() { 

    $data = array(); 
    $this->load->view('inner1',$data); 

} 

Ensuite, je peux mettre toute ma logique dans le contrôleur.

Quelle est la meilleure façon d'avoir un en-tête référencé? Dois-je le mettre dans le contrôleur en tant que variable, puis l'envoyer en tant que données à chaque vue?

De plus, s'il existe un moyen plus efficace de le faire, suggérez-le!

Merci!

Répondre

5

Ce que je fais habituellement est de faire l'en-tête dans une vue, puis d'ajouter la vue d'en-tête au contrôleur au-dessus de l'index ... vous pouvez faire de même avec le pied de page.

Donc, ce serait quelque chose comme:

public function blog() { 

    $data = array(); 
    $this->load->view('Header'); // just the header file 
    $this->load->view('inner1',$data); //your main content 
} 

sens? Ajouté: Vous pouvez également y inclure votre balise head complète, comme vos balises meta, title, css links, etc. Mais je les place généralement dans une autre vue car parfois elles sont différentes selon la page.

+0

Cela n'a de sens que merci –

5

J'utilise beaucoup CodeIgniter. J'ai un dossier nommé/common dans mon dossier/views. Là, j'ai mis mon footer.php, sidebar.php, header.php, et ainsi de suite.

Mes fichiers de vue ressemble à:

 
$this->load->view('header'); 
<div id"main"> 
..... 
</div> 


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

Mes fichiers contrôleur ressemble à:

 
public function blog() { 
    $this->data['title'] = "Blog"; 
    $this->data['meta_tags'] = $meta; 
    $this->data['entries'] = $entries; 

    $this->load->view('blog',$this->data); 
} 

Prenez note que les variables que le titre de $ ou meta, peuvent être appelés plus tard dans le modèle d'en-tête . De cette façon, je peux faire des changements sur common/header.php et persister sur le site.

Bonne chance! PD: Je recommande d'utiliser Carabiner pour gérer vos ressources en haut de chaque contrôleur, puis les afficher sur votre en-tête.php