Installation et préparation de CodeIgniter 2

CodeIgniter 2 est un framework PHP gratuit distribué par la société EllisLab. Il est conçu et suit la logique MVC (Modèle Vue Contrôleur) par le biais de PHP 5 (depuis la version 2 de Codeigniter). Comme tout framework PHP, il permet de développer rapidement des sites Web dynamiques. Le gros avantage de Codeigniter est sa légèreté (moins de 5 Mo décompressé) et sa rapidité. Ci-dessous, quelques astuces pour démarrer rapidement sur ce framework à condition d'avoir été initié aux fonctionnements du MVC.

Activer l'URL Rewriting

Il va surement vous arrivez à un moment ou un autre lors du développement de votre projet d'avoir recours à l'URL Rewrting. Afin de palier à une erreur :
"Not Found The requested URL /lien_vers_votre_urlrewriting was not found on this server",
créez un fichier .htaccess à la racine du dossier de Codeigniter pour activer l'URL Rewriting :

RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Changer le controller par défaut

Vous pouvez voir afficher la page welcome qui n'est autre que le contrôleur welcome.php dans le dossier :
application/controllers
qui appel la vue :
application/views/welcome_message.php
Par défaut, c'est ce contrôleur qui est indiqué comme contrôleur par défaut sur l'index de l'application de CI.
Pour modifier ce paramètre, allez dans le fichier de configuration des routes : application/config/routes.php.
Modifiez la ligne 51 "welcome" par "index_page" si vous venez de renommer "welcome.php" par "index_page.php" dans le dossier application/controllers (n'oubliez pas de modifier la classe principale
class Welcome extends CI_Controller
par
class Index_page extends CI_Controller sinon vous aurez droit au fameux "404 Page Not Found").
En effet, il n'est pas possible de nommer le contrôleur par défaut index.php sinon vous aurez l'erreur suivante :
Message: Undefined property: Index::$load
Filename: controllers/index.php

Configuration de la base de données

Dans le fichier application/config/database.php : de la ligne 51 à 54, remplissez les champs vides :

$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';

Le champ password peut être vide si vous n'avez pas de mot de passe.
Si vous utilisez une base de données PostgreSQL vous devez modifier la ligne 55

$db['default']['dbdriver'] = 'mysql';

par

$db['default']['dbdriver'] = 'postgres';

Automatisation de connexion à la base de données

Par défaut, il faudra charger manuellement la base avec le code suivant :

$this->load->database();

Pour automatiser cette tache, allez dans le fichier de configuration des auto-chargements application/config/autoload.php et remplissez le champ de la ligne 55 en demandant de charger la librairie "database" sur toutes les pages du site.

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

Où mettre les fichiers CSS, Javascript et les images ?!

En fait, il existe plusieurs méthodes, je vais vous en montrer 3.
Avant toute chose, pour ne pas troubler l'arborescence de Codeigniter, il est conseillé de créer un dossier "assets" à la racine de votre projet et d'y placer les sous dossiers "css", "js" et "img".
Cela permet d'avoir accès rapidement à ce dossier qui sera lourd en fichiers média et ainsi faciliter les sauvegardes.
Allez dans le fichier de configuration des auto-chargements application/config/autoload.php et remplissez le champ de la ligne 55 en demandant de charger le helper "url" :

$autoload['helper'] = array('url');

afin d'activer la fonction

<?php echo base_url(''); ?>

Chargement du css dans la vue

Dans la vue, rajoutez la ligne d'appel de CSS.

<link rel="stylesheet" href="<?php echo base_url("assets/css/style.css"); ?>" />;

Si vous regardez dans le code source de votre navigateur, vous pouvez remarquer que <?php echo base_url('');?> permet d'afficher le lien absolu dans lequel se situe votre fichier.

Chargement par include

Créez un fichier "inc.header.php" dans "/application/view/inc". Ce fichier va permettre de charger la feuille de style commune à toutes vos vues directement dans l'include inc.header.php.

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <title><?php echo $title; ?> </title>  <!-- Variable présente dans les controllers respectifs -->
        <link rel="stylesheet" href="<?php echo base_url("assets/css/style.css"); ?>" />
    </head>

puis, dans vos vues, ajoutez l'inclusion en début de page :

<?php include("layouts/header.php"); ?>

Chargement dans le contrôleur

Cette méthode se rapproche beaucoup de la méthode ci-dessus et supprime l'inclusion dans le fichier vue ("inc.header.php") au profit du contrôleur.

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

    class Index_page extends CI_Controller {

        function index()
        {
            $this->load->view("layouts/header");
            $this->load->view("index");
        }

    }

Personnaliser la page 404

a) Allez dans le fichier de configuration des routes : //application/config/routes.php et remplissez le champ vide de la ligne 42 :

$route['404_override'] = 'erreur404';

b) Créer un nouveau controller "erreur404.php" dans le dossier des contrôleurs : application/controllers

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

class erreur404 extends CI_Controller
{

   public function __construct()
   {
           parent::__construct();
   }

   public function index()
   {
       $this->load->view("view_404");
   }

}

c) Créez la vue "view_404.php" dans le dossier des vues application/views. Personnalisez la page à votre goût.
Bien entendu, vous pouvez appeler dans votre contrôleur des bouts de vues de votre template (header, menu de navigation, sidebar, footer, etc...). La liste des erreurs HTTP se trouvent dans le fichier systemcoreCommon.php à partir de la ligne 378.

Astuce : créer un fichier .htaccess sur Windows

Ouvrez notepad (Windows + R : notepad) et enregistrez sous "Nom de fichier" : .htaccess puis dans "type" : "Tous les fichiers".

Documentation