vendredi 20 septembre 2013

Les contrôleurs

Exercice 1 : notre premier contrôleur

1) Créez le contrôleur blog

2) Faites en sorte que l'appel de ce contrôleur affiche "Hello World!"


Exercice 2 : notre première méthode

1) Dans le contrôleur blog, créez la méthode afficherbillet qui affichera le texte Méthode afficherbillet()


Exercice 3 : notre première fonction

1) Dans le contrôleur blog, créez la fonction miseenformebillet(). Cette fonction retournera le texte billet mis en forme

2) Dans la méthode afficherbillet précédemment créée, affichez la fonction miseenformebillet().


Exercice 4 : les paramètres

1) Envoyez les paramètres segmentaires ref et titre à la méthode afficherbillet du contrôleur blog

2) Envoyez les paramètres GET ref et titre à la méthode afficherbillet du contrôleur blog

3) Envoyez les paramètres POST ref et titre à la méthode afficherbillet du contrôleur blog


Exercice 5 : le constructeur

1) Utilisez le constructeur du contrôleur Blog pour définir la variable $this->titrePage = "Titre de ma page"

2) Affichez cette variable dans la méthode afficherbillet


Exercice 6 : contrôleur par default

1) Utilisez le contrôleur blog comme contrôleur par default


Correction de l'exercice 1

Qu'est-ce qu'un Contrôleur ?

Un contrôleur est simplement une classe nommée de manière à être associée logiquement avec une URI.

Par exemple :

example.com/index.php/blog/

Commençons par créer notre contrôleur blog (blog.php) dans le répertoire application/controllers/ et y placer le code suivant :

<?php

class Blog extends CI_Controller {

 function index() {

  echo 'Hello World!';

 }
}

On test en appelant http://siteci.dev/index.php/blog/ avec notre navigateur :

On obtient bien le résultat souhaité

On peut là encore comparer CodeIgniter avec d'autre framework tel que Zend qui demandent obligatoirement une vue pour fonctionner.


Correction de l'exercice 2

Pour ajouter la méthode afficherbillet à notre controleur nous devons juste ajouter la fonction suivante :

function afficherbillet() {

 echo 'Méthode afficherbillet()';

}

Et on test en appelant http://siteci.dev/index.php/blog/afficherbillet/ dans notre navigateur


Correction de l'exercice 3

Comme précédemment, on ajoute la fonction miseenformebillet à notre contrôleur blog.

function miseenformebillet() {

 return 'billet mis en forme';

}

Seulement le problème est que si on appele l'URL http://siteci.dev/index.php/blog/miseenformebillet/ on obtient une réponse de la part du serveur.

Pour indiquer que cette fonction ne sera qu'une fonction de travail il nous suffit d'ajouter private en préfixe de la fonction.

CodeIgniter nous propose également de rajouter un _ devant le nom de la fonction pour la rendre privée.

Maintenant lorsque nous essayerons d'accèder à cette fonction via une URL nous obtiendrons le résultat suivant :

Nous allons maintenant appeler la fonction miseenformebillet dans notre méthode afficherbillet :

function afficherbillet() {

 echo $this->miseenformebillet();

}

Testons en appelant http://siteci.dev/index.php/blog/afficherbillet/


Correction de l'exercice 4

Nous allons maintenant envoyer des paramètres à notre méthode afficherbiller

Modifions notre méthode pour :

function afficherbillet ($pRef, $pTitre) {

 echo 'Réf: '.$pRef.', Titre : '.$pTitre;

}

Entrons l'URL http://siteci.dev/index.php/blog/afficherbillet/33/titre-billet/ et nous devrions avoir le résultat suivant :

Remodifions notre fonction pour récupérer maintenant des paramètres GET

function afficherbillet () {

 echo 'Ref: '.$this->input->get('ref').', Titre: '.$this->input->get('titre');

}

Pour les POST le fonctionnement est similaire que pour les GET

function afficherbillet () {

 echo 'Ref: '.$this->input->post('ref').', Titre: '.$this->input->post('titre');

}

CodeIgniter met également à disposition une fonction universelle qui nous permet de récupérer des GET ou des POST. Si vous lui envoyez un GET et POST portant le même identifiant, le POST sera prioritaire sur le GET.

$this->input->get_post('ref');

Pour se protèger des failles XSS, CodeIgniter nous propose de mettre TRUE en deuxième paramètre :

// NON PROTEGE CONTRE LES XSS
$this->input->post('ref');

// PROTEGE CONTRE LES XSS
$this->input->post('ref', TRUE);

Correction de l'exercice 5

Sur CodeIgniter pour avoir un constructeur à notre contrôleur nous devons utiliser la fonction suivante

function __construct() {

 parent::__construct();

 $this->titrePage = "Titre de ma page";

}

Puis dans notre fonction afficherbillet on a juste à appeler notre variable titrePage

function afficherbillet () {

 echo $this->titrePage;

} 

Il ne nous reste plus qu'a tester en appelant notre méthode :

Notre variable titrePage sera maintenant accesible dans toutes les fonctions du contrôleur.


Correction de l'exercice 6

Actuelement lorsque l'on affiche notre site http://siteci.dev on arrive sur la page de bienvenue fournie par l'éditeur.

Nous allons changer ça pour mettre le contrôleur blog que nous avons créé dans les exercices précédents.

On ouvre le fichier de configuration application/config/routes.php et on change

$route['default_controller'] = "welcome";

pour

$route['default_controller'] = "blog";

On enregistre et on affiche notre site

La méthode index de notre contrôleur blog est maintenant affichée par default

Aucun commentaire:

Enregistrer un commentaire