Citation

J’ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone.

Bjarne Stroustrup

jeudi 10 janvier 2013

FuelPHP Pas à pas #4 - paramètres

Maintenant que l'on sait afficher une page, il faudrait rendre le contenu de cette page un peu plus dynamique. Il faudrait pouvoir afficher des variables dans cette page.

Utilisation de valeur dans une page

On part de notre contrôleur Controller_Step2 et on va ajouter une méthode action_hello. Cette action sera appelée via l'adresse http://localhost/fuelphp/public/step2/hello. Comme pour l'action action_index, on va utiliser une page que l'on va afficher. Le code de l'action va être alors:

   public function action_hello(){
      return Response::forge(View::forge('step2/hello'));
   }


Et il faut bien-sur créer la page APPPATH/views/step2/hello.php avec un code HTML valide.

Jusque la, pas de changement. Si on regarde la doc de View, la méthode View::forge () prend des paramètres supplémentaires, le premier étant $data, un tableau de valeurs.
On modifie notre action avec le code:

   public function action_hello(){
      $data['message'] = 'Hello';
      $data['name'] = 'you';
      return Response::forge(View::forge('step2/hello',$data));
   }


On passe un tableau de valeurs contenant un message et un nom.
Il faut afficher ces valeurs dans notre page HTML, on modifie APPPATH/views/step2/hello.php comme ceci pour afficher les valeurs:

<?php echo Html::doctype('xhtml1-strict');?>
<html>
<head>
   <meta charset="utf-8">
   <title>Step 2 - Passage de valeur</title>
</head>
<body>
   <h1>Step 2 - Passage de valeur à la page</h1>
   <p>Vous avez dit: <?php echo $message;?> <?php echo $name;?>!!</p>
</body>
</html> 


Si on affiche notre page avec http://localhost/fuelphp/public/step2/hello on obtient bien notre message "Hello you!!"

Fournir un paramètre

Ca serait bien que le nom soit un paramètre passé via la requête. Il faut donc lire la valeur d'un paramètre de la requête, le code de action_hello() devient:

   public function action_hello(){
      $data['message'] = 'Hello';
      $data['name'] = $this->param('name', 'you');
      return Response::forge(View::forge('step2/hello',$data));
   }


Le "$this->param('name','you'); permet de lire la valeur du paramètre "name" et s'il n'existe pas d'utiliser la valeur "you". L'affichage de la page ne change pas, ce qui est normal puisque nous n'avons pas fournis de valeur au paramètre "name".

Ca se passe encore dans le fichier APPPATH/config/routes.php ou on va dire que pour step2/hello, s'il y a une valeur après alors c'est la valeur à attribuer au paramètre "name". On va ajouter la ligne suivante dans le fichier :

'step2/hello/:name'   => 'step2/hello', // parametre "name"

Ce qui se traduit par: "une requete de la forme /step2/hello/xxxx est renvoyée vers /step2/hello et xxxx est mis dans le paramètre "name". L'adresse http://localhost/fuelphp/public/step2/hello/World affiche le bon vieux "Hello World!!".

A noter que l'on pourrait aussi écrire :

'hello/:name'   => 'step2/hello' ,

Ce qui rendrait la même page accessible via http://localhost/fuelphp/public/hello/World
La doc sur le routage est la : http://fuelphp.com/docs/general/routing.html

2 commentaires: