CI, une histoire de Layout
Bonjour, (c'est encore moi)
Je suis actuellement arrivé au chapitre concernant les layout mais malheureusement, je ne comprends pas le passage suivant :
Citation:
Vous pouvez maintenant afficher votre vue à l'intérieur du layout.
Code:
1 2 3 4 5 6 7 8 9 10
| <?php
public function accueil()
{
$this->load->library('layout');
$this->layout->views('premiere_vue')
->views('deuxieme_vue')
->view('derniere_vue');
} |
Citation:
Cela permet d'éviter la redondance du code. Sauf… qu'il subsiste un problème. Maintenant, vous n'avez plus accès à tout ce qui se passe dans votre balise <head>. Vous ne pourrez donc plus donner de titre à votre page, ni inclure de fichier CSS, etc. Nous allons remédier à cela tout de suite.
Donc maintenant j'explique mon problème :
J'ai utilisé en suivant le tutoriel sur le site le layout.php qu'on met dans le dossier libraries
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Layout
{
private $CI;
private $var = array();
/*
|====================================================
| Constructeur
|====================================================
*/
public function __construct()
{
$this->CI =& get_instance();
$this->var['output'] = '';
// Le titre est composé du nom de la méthode et du nom du contrôleur
// La fonction ucfirst permet d'ajouter une majuscule
$this->var['titre'] = ucfirst($this->CI->router->fetch_method()) . ' - ' . ucfirst($this->CI->router->fetch_class());
// Nous initialisons la variable $charset avec la même valeur que
// la clé de configuration initialisée dans le fichier config.php
$this->var['charset'] = $this->CI->config->item('charset');
}
/*
|====================================================
| Methodes pour charger les vues
| . view
| . views
|====================================================
*/
public function view($name, $data = array())
{
$this->$var['output'] .= $this->CI->load->view($name, $data, true);
$this->CI->load->view('../themes/default', array('output' => $this->var));
}
public function views($name, $data = array())
{
$this->var['output'] .= $this->CI->load->view($name, $data, true);
return $this;
}
/*
|===============================================================================
| Méthodes pour modifier les variables envoyées au layout
| . set_titre
| . set_charset
|===============================================================================
*/
public function set_titre($titre)
{
if(is_string($titre) AND !empty($titre))
{
$this->var['titre'] = $titre;
return true;
return false;
}
}
public function set_charset($charset)
{
if(is_string($charset) AND !empty($charset))
{
$this->var['charset'] = $charset;
return true;
}
return false;
}
}
/* End of file layout.php */
/* Location: ./application/libraries/layout.php */ |
Et n'ayant pas tout a fait compris, j'ai tenté d'inclure ma vue dans ce layout :
Code:
1 2 3 4 5
| public function index()
{
$this->load->library('layout');
$this->layout->views('welcome_message');
} |
Quand je vais sur la page pour voir le résultat, j'ai simplement une page blanche et quand j’accède au code source de la page avec Firefox, c'est vide même pas une trace de HTML.
D'avance, merci de votre aide.