Blogdevphp

Codeigniter : Une simple librairie pour faire son layout

2014-02-22 codeigniter

Avoir un layout permet de ne pas dupliquer son code et de ne pas avoir à modifier une multitude de pages, afin de changer une ou des variable(s).

La librairie Template créée par Jérôme Jaglale, est une simple librairie, facile à mettre en place et à prendre en main.

Elle ne se limite pas qu'a la construction du layout.

Non seulement, vous pourrez faire votre layout mais de plus, par exemple, changer le title en fonction de la page. 

Installation de la librairie

Pour commencer, nous allons télécharger la librairie. Après avoir dézipper l'archive, vous serez en possession de fichier Template.php.

<?php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Template {
     var $template_data = array();
  
  function set($name, $value)
  {
   $this->template_data[$name] = $value;
  }
 
  function load($template = '', $view = '' , $view_data = array(), $return = FALSE)
  {               
   $this->CI =& get_instance();
   $this->set('contents', $this->CI->load->view($view, $view_data, TRUE));   
   return $this->CI->load->view($template, $this->template_data, $return);
  }
}

/* End of file Template.php */
/* Location: ./system/application/libraries/Template.php */

?>

Nous allons mettre ce fichier dans le répertoire application/librairies et l'ajouter dans notre fichier autoload dans le répertoire application/config/autoload.php.

<?php
/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|    $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('template');

?>

Utilisation de la librairie

Soyons fous, créons un fichier layout.php qui comme son nom l'indique sera notre layout :

<!DOCTYPE html>
<html> 
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Exemple page</title>
    <link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/site.css"/>
  </head>

  <body>

    <div class="container-fluid"><?= $contents ?></div>
    
    <script src="<?php echo base_url(); ?>assets/javascript/jquery-1.11.0.js" type="text/javascript"></script>
  </body>

</html>

Maintenant, que nous avons défini notre template, on va pouvoir l'utiliser dans notre contrôleur :

<?php

if (!defined('BASEPATH'))
  exit('No direct script access allowed');

class Front extends CI_Controller {

public function index() {
    $this->template->load('layout', 'front/home');
  }


}

Le contenu du fichier  'home' sera intégré dans le layout représenté par la variable $contents.

Conclusion

Comme je vous l'ai dit plus haut, vous pourrez déterminez des title différents pour vos pages, créez des menus et mettre en surbrillance, par rapport à la page courante, le menu correspondant et plus encore.

Pour en savoir plus sur cette librairie, c'est ici.

comments powered by Disqus
Copyright © 2018 blogdevphp.fr - Tous droits réservés