mai 27 09

Vue avec CodeIgniter (partie 4)

by ekevin

Les vues permettent de séparer le fonctionnement de l’application avec le rendu final. Il est possible d’afficher les résultats directement depuis le model ou le controller mais celà est fortement déconseillé. Nous ne préservons plus la logique de séparation du modèle MVC.

Afin de mieux comprendre le bénéfice de l’architecture MVC nous allons dans un premier temps contrôller ce que nous allons disposer à l’écran par l’intermédiaire du contrôleur. Nous nous rendrons très vite compte que cette manière de faire est très difficile à maintenir.

Voici à quoi ressemblait notre contrôleur dans la partie précédente :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
class Users extends MY_Controller {
 
    public function __construct() {
        parent::__construct();
    }
 
    public function index() {
        $data = $this->Users_model->getAll();
        var_dump($data);
    }
        // ...
}

Nous avons tous nos utilisateurs avec leur profil dans un tableau que nous avons nommé $data. Pour extraire ces données nous utiliserons la boucle foreach.

1
2
3
4
5
6
7
8
9
    function index() {
        $data = $this->Articles_model->getAll();
        foreach ($data as $profil)
        {
            printf("<h1>%s</h1>\n", $profil->username);
            printf("<p>Lieu : %s, %s</p>\n", $profil->city, $profil->country);
            printf("<p>What's your favorite colour ? %s</p>\n", $profil->colours);
        }
    }

Le rendu est plutôt simple à agencer, mais le rendu est inacceptable, si nous devons avoir un header, un footer, peut-être une sidebar et ajouter des styles aux différents éléments, de plus qu’en adviendra-t-il lorsque nous aurons plusieurs rendu ?
L’exercice est plutôt périlleux, cependant vous pouvez toujours vous exercez…

C’est ici qu’intervient ce que nous nommons la vue. Dans le contrôleur nous devons spécifier un template ainsi que les données à envoyer.

Ceci se fait par l’intermédiaire de :

1
$this->load->view('nom du template sans extension', $data);

Notre méthode index() ressemblera alors à :

1
2
3
4
        function index() {
                $data = $this->Users_model->getAll();
		$this->load->view('home',$data)
        }

Si vous essayez maintenant de voir le rendu à l’aide de votre navigateur, vous devriez apercevoir une erreur. Ce qui est normal car nous savons ce que nous faisons (non ?). Rendons-nous dans le répertoire views pour créer la vue home.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Les articles</title>
  </head>
  <body>
    <h1>Les articles du site</h1>
    <?php
    foreach ($data as $profil) {
        printf("<h1>%s</h1>\n", $profil->username);
        printf("<p>Lieu : %s, %s</p>\n", $profil->city, $profil->country);
        printf("<p>What's your favorite colour ? %s</p>\n", $profil->colours);
    }
    ?>
  </body>
</html>

Cette fois nous avons créer, un fichier home.php ne contenant que la vue de notre application. Nous pouvons déjà apprécier le confort que peut apporter la séparation du model, du contrôleur et de la vue. Il est maintenant plus simple pour un designer d’opérer sur ce modèle, sans savoir ce qui se trame derrière.

CodeIgniter est fournie avec un parseur de base. Pour charger ce parseur, éditons le fichier application/config/autoload.php et ajoutons la librairie pour qu’elle se charge automatiquement.
L’avantage du parseur est que nous pouvons utiliser un langage spécifique à l’intérieur de notre template.
L’appel au sein de notre contrôleur se fera en rempla‎‎çant

1
$this->load->view('home',$data)

par

1
$this->parser->parse('home', $data);

Nous pouvons alors maintenant accéder à nos données sous la forme {data}.

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
  <head>
    <title>Liste des utilisateurs</title>
  </head>
  <body>
    <h1>Profil des utilisateurs</h1>
    {data}
	<h1>{username}</h1>
	<p>{city}, {country}</p>
	<p>{colours}</p>
    {/data}
  </body>
</html>

{articles}...{/articles} agit ici pour indiquer une boucle, tandis que {title}, {date} et {content} sont les éléments de notre objet.

L’utilisation d’un parseur n’est pas obligatoire. Elle dépend des envies et des attentes de chacun. Le parseur par défaut de CI n’offre pas beaucoup d’options et l’utilisation avancée d’un réel moteur de template vient à manquer rapidement. Smarty semble le candidat idéal, outre le fait de pouvoir manager simplement nos données facilement, il offre l’avantage de mixer les templates, choses assez compliqué à réaliser avec le moteur par défaut de codeigniter. De plus Smarty offre une panoplie d’outils pour aider à formater les données (majuscules, minuscules, échappement…) et une communauté assez forte.

Dans le prochain tutoriel nous intégrerons Smarty. Si vous ne le connaissez pas rendez-vous sur le site officiel.

mai 13 09

Hadopi adoptée… La France toujours en retard

by ekevin

La loi HADOPI vient d’être adoptée. Une preuve de plus que le gouvernement de France ne sait pas réfléchir sur des questions modernes. Répression au lieu de réfléchir sur de nouvelles formes d’investissements du Web.

Les droits d’auteur, le copyright, le copyleft, l’Open Source en général ont été passé à la trape. La France dort et stagne et se laisse dicter par des partenariats avec entre hommes politiques et majors ayant des intérêts uniquement en France au détriment de la raison commune. Il n’y a que regarder les soutiens mobilisés par la quadrature du Web ainsi qu’un échantillon des réactions à cette loi sur Twitter.

Hier le fichier Edwig, aujourd’hui Hadopi et demain une taxe sur les base de données ? Freelance, entrepreneur, PME et utilisateurs du Web, les lois se moquent de nous !

mai 10 09

Installer Ruby on Rails sur Linux

by ekevin

Voici quelques lignes de commandes pour installer Ruby on Rails sur Linux

Télécharger le dernier package de ruby (1.8.7) (suivre les recommandation ici, aujourd’hui il est recommandé de prendre ruby 1.8.7)

$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
$ tar -xvf ruby-1.8.7-p72.tar.gz
$ cd ruby-1.8.7-p72
  • Vérifier que ./configure est plus récent que configure.ini, sinon autoconf
  • ./configure
  • make
  • make test
  • make install (en super user)
  • type ruby && ruby -V (pour savoir où est installer ruby et quelle version)

Ensuite il faut récupérer RugyGems qui est le gestionnaire de paquet pour Ruby, plus d’informations sur le site de RubyForge.

wget http://rubyforge.org/frs/download.php/56227/rubygems-1.3.3.tgz
tar -xvf rubygems-1.3.3.tgz
sudo ruby setup.rb

Maintenant nous pouvons passer par gems pour installer rails.

sudo gem install rails

Vous pouvez désormais suivre les tutoriaux du web comme les screencasts consultable sur le site officiel.