Table des matières

Introduction à CodeIgniter

  1. Introduction à CodeIgniter

CodeIgniter est un framework php respectant MVC. Il est assez populaire, et relativement facile à prendre en main.
Il a été développé par l’entreprise EllisLab en 2006 pour ses propres besoins, puis mis à disposition du public par la suite.

Téléchargement

Télécharger la dernière version: CodeIgniter 2.2

Installation

Dans Eclipse, installer le plugin PDT (PHP Development Tool), pour développer plus confortablement en PHP. Installer également le complément à PDT (p2.dubture.com), pour bénéficier de l'implémentation automatique des getters and setters.

L'arborescence du projet est la suivante :

Le dossier system contient les fichiers propres à codeIgniter, le dossier application les sources de notre application, déjà structurées.

Tester le bon fonctionnement en allant à l'adresse : http://localhost/nomProjet/

Structure d'une application

Il est indispensable par la suite de respecter la structure initiale d'une application codeIgniter :

Dossier Rôle
assets contient toutes les ressources qui vont être téléchargées par les visiteurs. Par exemple, les feuilles de style externes (CSS), les fichiers JavaScript et les images.
systemcontient les sources de CodeIgniter, ne pas y toucher !
applicationcontient tous nos scripts, qu'il faut placer dans les bons dossiers.

Sous dossier application

Dossier Rôle
config Fichiers permettant de configurer CodeIgniter ou une bibliothèque. Certains sont inclus automatiquement, d'autres à la demande.
controllers Contient les contrôleurs.
errors Contient les pages d'erreurs.
helpers Dossier pour les helpers. Les helpers fournis avec CodeIgniter sont situés dans le dossier system.
hooks Dossier contenant des fichiers permettant d'exécuter des scripts à différents moments du processus d'exécution de CodeIgniter.
language Dossier contenant les fichiers de langue.
libraries Dossier des bibliothèques. Comme les helpers, les bibliothèques fournies par CodeIgniter sont situées dans un autre dossier.
models Dossier des models (classes métier).
views Dossier des vues.

Configuration de base

Vérifier que le mod reWrite d'Apache est activé. Ajouter le fichier htaccess suivant dans la racine de l'application Web, de façon à rediriger toutes les requêtes vers le fichier contrôleur index.php :

#   Empêche la visualisation de l'arborescence, n'a rien à voir avec le masquage du « index.php ».
Options -Indexes

#   Active le module de réécriture d'URL.
RewriteEngine on

#
#   Fixe les règles de réécriture d'URL. Ici, nous utilisons une liste blanche.
#

#   Toutes les URL qui ne correspondent pas à ces masques sont réécrites.
RewriteCond $1 !^(index\.php|assets/|css|robots\.txt)

#   Toutes les autres URL vont être redirigées vers le fichier index.php.
RewriteRule ^(.*)$ index.php/$1 [L]

config.php

Modifier le fichier application/config/config.php :
Utiliser http://randomkeygen.com/ pour générer l'encryption_key.

|h config.php
$config['base_url']	= 'http://localhost/testPhp/';
$config['index_page'] = '';
$config['url_suffix'] = '';
$config['encryption_key'] = 'GZD39H6F95i3jb34PA4sw1LccPI807uu';

database.php

Exécuter le script de création de la base de données dans phpmyadmin : testci.sql

Définir les paramètres de connexion à la base dans database.php :

|h database.php
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'testci';
$db['default']['dbdriver'] = 'mysql';

autoload.php

Chargement de librairies et de helpers :

|h autoload.php
$autoload['libraries'] = array('database','session');
$autoload['helper'] = array('url');

Premier Contrôleur

Création d'un contrôleur :
Créer la classe Test dans le dossier controllers, et nommez le fichier test.php :

|h controllers/test.php
<?php
class Test extends CI_Controller{
	public function affiche(){
		echo ("good");
	}
}
?>

Aller ensuite à l'adresse : http://localhost/testPhp/test/affiche/

  • Un contrôleur est un fichier contenant une classe dont le nom commence par une majuscule.
  • Le nom du fichier doit être le même que celui de la classe, mais en minuscule.
  • Le fichier doit être sauvegardé dans le dossier application/controllers/.
  • Les méthodes de la classe sont directement accessibles via l'url : http://localhost/site/controllerClass/methodeName/

Il est conseillé d'organiser les contrôleurs en dossiers

Contrôleur et variables GET

Un contrôleur peut accepter les variables passées par un GET, par l'intermédiaire des paramètres déclarés dans le prototype de la méthode appelée :

|h test.php
<?php
class Test extends CI_Controller{
	public function affiche(){
		echo ("good");
	}
	public function testGet($nom,$autre=''){
		echo ('Le nom passé par GET est : '.$nom);
		if($autre!='')
			echo ('Le paramètre autre passé par GET est : '.$autre);
	}
}
?>

La méthode testGet accepte 2 paramètres, le premier obligatoire, le second facultatif.

Tester les urls suivantes :

Vues

Création

Créer la vue accueil.php dans le dossier views :

|h views/accueil.php
<?php
echo("<h1>Accueil</h1>")
?>

Appel

Appeler la vue accueil.php dans une méthode du contrôleur Test :

|h controller/test.php
class Test extends CI_Controller{
	function __construct(){
		parent::__construct();
	}
	public function accueil(){
		$this->load->view('accueil');
	}
}

Aller à l'adresse : http://localhost/testPhp/test/accueil/

Passage de variables du contrôleur à la vue

Modifier la méthode accueil de la façon suivante :

|h controller/test.php
<?php
class Test extends CI_Controller{
	function __construct(){
		parent::__construct();
	}
	public function accueil(){
		$data=array();
		$data['nom']='DUPONT';
		$data['prenom']='Maurice';
		$this->load->view('accueil',$data);
	}
}
?>

La vue accueil peut maintenant récupérer les variables passées dans le tableau $data :

|h views/accueil.php
<?php
echo("<h1>Accueil</h1>");
echo ("Bienvenue ".$nom." ".$prenom);
?>

Il est possible d'appeler plusieurs vues dans le contrôleur :

	$this->load->view('vue1');
	$this->load->view('vue2',$data);

Il est également possible de mettre le résultat d'une vue dans une variable (en mettant à true le troisième paramètre) :

	$vue1=$this->load->view('vue1',$data,true);

Il est conseillé d'organiser les vues en dossiers. Puis de les appeler en faisant
$this->load->view('nomDossier/vue1');

Helpers

Les helpers (classes apportant des fonctionnalités) peuvent être chargés automatiquement dans le fichier autoload.php :

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

ou à la demande, dans un contrôleur par exemple :

$this->load->helper('url');

Le chargement d'un Helper permet ensuite d'appeler toutes les fonctions déclarées par le Helper.