|
TutorialFrench
Traduit par: Naixn Comment créer une application simple grâce au framework AkelosIntroductionCe tutoriel va vous permettre de créer une application à l’aide du framework Akelos. Nous allons donc créer booklink, une application de gestion de livres et de leurs auteurs. Configuration nécessaire
Cette configuration est plutôt commune et se retrouve sur la plupart des serveurs web ou machines UNIX. Bien sûr, Akelos fonctionne sur plusieurs types de configuration, mais pour ce tutoriel, nous nous concentrerons sur celle-ci. Téléchargement et installationTant qu’Akelos n’est pas sorti dans sa version finale (1.0), nous vous recommandons de toujours utiliser la dernière révision SVN. Pour cela, il vous faudra posséder un client subversion. Pour récupérer la dernière révision d’Akelos, tapez la commande : svn co http://akelosframework.googlecode.com/svn/trunk/ akelos Si jamais vous ne pouvez ou ne voulez pas utiliser subversion, vous pouvez toujours télécharger la dernière version stable. Vous pouvez ensuite l’extraire en tapant : tar zxvf akelos_framework-dev_preview.tar.gz ; mv akelos_framework-dev_preview akelos Il faut maintenant s’assurer qu’Akelos sera capable d’utiliser PHP sur votre système. Tapez donc : /usr/bin/env php -v Si vous voyez quelque chose de ce genre : PHP 5.2.1 (cli) (built: Jan 17 2006 15:00:28) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies alors vous êtes prêts à utiliser Akelos, vous pouvez donc passer au paragraphe suivant. Cependant, si ce n’est pas le cas, il vous faudra trouver le chemin complet vers votre binaire PHP. En général, il suffit de taper : which php Ensuite, changez le chemin dans le shebang #!/usr/bin/env php par le votre, et ce, au début de chacun de ces fichiers :
Pour les utilisateurs de Windows : Les shebang ne sont pas pris en compte sur Windows. Il vous faudra donc appeler les scripts directement avec le binaire php : C:\wamp\php\php.exe ./script/generate scaffold Mise en place d’une nouvelle application AkelosA ce point, vous devez avoir Akelos mis en place, et devez être capable de lancer les scripts PHP depuis une console. Bien que ces scripts ne soient pas absolument nécessaires au fonctionnement d’Akelos, ils le seront pour ce tutoriel. Vous avez maintenant deux possibilités :
Vous l’aurez sûrement deviné, nous utiliserons la première méthode qui consiste à créer un lien (symbolique par exemple) vers le dossier public de notre application. Il est aussi très simple de configurer les dossiers du framework, puisqu’il suffit de définir l’emplacement de chacun des composants. Cependant, ce n’est pas le sujet de cette explication, et laissons cette partie à un prochain tutoriel expliquant la mise en place et en production d’une application. Nous supposerons que vous avez téléchargé Akelos dans le dossier HOME_DIR/akelos et que vous vous situez à la racine du dossier akelos. D’ici, vous pouvez obtenir les différentes options d’installation du framework en tapant : ./script/setup -h Vous devriez obtenir l’affichage suivant : Usage: setup [-sqphf --dependencies] <-d>
-deps --dependencies Includes a copy of the framework into the application
directory. (true)
-d --directory=<value> Destination directory for installing the application.
-f --force Overwrite files that already exist. (false)
-h --help Show this help message.
-p --public_html=<value> Location where the application will be accesed by the
webserver. ()
-q --quiet Suppress normal output. (false)
-s --skip Skip files that already exist. (false)Dont voici la traduction : Utilisation: setup [-sqphf --dependencies] <-d>
-deps --dependencies Inclut une copie du framework dans le répertoire de
l'application. (true)
-d --directory=<value> Dossier d'installation de l'application.
-f --force Écraser les fichiers existants. (false)
-h --help Affiche cette aide.
-p --public_html=<value> Dossier par lequel le serveur web va accéder à
l'application.
-q --quiet N'affiche rien. (false)
-s --skip Ne copie pas les fichiers déjà existants. (false)Voici un exemple de commande d’installation : (remplacez /www/htdocs par le chemin vers votre serveur web) ./script/setup -d ~/booklink -p /www/htdocs/booklink Cela va générer l’architecture suivante pour l’application booklink : booklink/
app/ << L'application (modèles, vues, contrôleurs, et installeurs)
config/ << Des machins de configuration, mais tout sera fait via navigateur.
public/ << Le seul dossier rendu public
script/ << Outils de génération de code, de lancement de tests, etc.Pour les utilisateurs de Windows : Les liens symboliques ne fonctionnent pas non plus sous Windows. Il va donc falloir renseigner Apache sur le chemin vers votre application. Éditez le fichier httpd.conf et rajoutez ceci (en modifiant, bien entendu, au préalable selon votre configuration) : Alias /booklink "/chemin/vers/booklink/public"
<Directory "/chemin/vers/booklink/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>N’oubliez pas de redémarrer le serveur Apache. Création de la base de données (MySQL)Si vous comptez utiliser SQLite, sautez cette étape La prochaine étape consiste à créer la base de données relative à votre application. Le but de ce tutoriel n’est bien évidemment pas de vous apprendre à créer une base de données. Si vous ne savez pas comment faire, faites des recherches sur Google, vous trouverez sûrement quelquechose :). Cependant, vous pouvez tout simplement essayer de créer 3 bases différentes, pour chacun des 3 environnements (production, développement, tests) $> mysql -u root -p mysql> CREATE DATABASE booklink; mysql> CREATE DATABASE booklink_dev; mysql> CREATE DATABASE booklink_tests; mysql> FLUSH PRIVILEGES; mysql> exit Vous pouvez bien évidemment passer par une interface graphique, telle phpMyAdmin, pour créer ces tables. Création des fichiers de configurationÀ l’aide de l’installeurVous pouvez ouvrir votre navigateur et vous rendre sur le script d’installation en allant à l’adresse http://localhost/booklink. Vous allez donc pouvoir configurer votre base de données, vos différents langages, et les permissions de vos fichiers. Le fichier de configuration sera enfin généré. Pendant que bermi s’occupe de prendre un café en attendant que les Anglais et les Espagnols configurent leur application booklink, je pencherais plutôt pour un p’tit chocolat chaud. Configuration manuelle (non, pas le prénom)Copiez les fichiers config/DEFAULT-config.php et config/DEFAULT-routes.php en tant que config/config.php et config/routes.php, respectivement, et éditez-les à vos soins. Il vous faudra probablement aussi définir le dossier à partir duquel s’effectue la ré-écriture d’URL (afin de pouvoir utiliser des URL propres). Éditez donc le fichier public/.htaccess, et changez la valeur de RewriteBase : RewriteBase /booklink Une fois votre application installée, vous pouvez ouvrir un navigateur et aller sur http://localhost/booklink. Un message d’accueil s’affichera, et vous pourrez alors supprimer les fichiers d’installation du framework. Structure de la base de donnéesIl va maintenant falloir définir les tables que booklink va utiliser pour stocker les informations sur les livres et leurs auteurs. La plupart du temps, lorsque l’on travaille avec d’autres développeurs, le schéma de la base de données est susceptible de changer. Il devient alors compliqué de maintenir cette base identique pour chaque personne du projet. Akelos propose donc une solution à ce problème, appelée installer, ou migration. Grâce à cet outil de migration, vous allez non seulement pouvoir créer vos bases de données, mais aussi générer un installeur, qui pourra être utilisé pour enregistrer tous les différents changements que vous effectuerez sur la base. Pour ce tutoriel, créez le fichier app/installers/booklink_installer.php, et copiez-y le contenu suivant : <?php
class BooklinkInstaller extends AkInstaller
{
function up_1(){
$this->createTable('books',
'id,'. // La clé primaire
'title,'. // Le titre du livre
'description,'. // La description du livre
'author_id,'. // L'identifiant de l'auteur. C'est grâce à cela qu'Akelos va pouvoir faire le lien entre les deux.
'published_on' // La date de publication
);
$this->createTable('authors',
'id,'. // La clé primaire
'name' // Le nom de l'auteur
);
}
function down_1(){
$this->dropTables('books','authors');
}
}
?>Ce peu de données suffit à Akelos pour créer la base de données. En ne spécifiant que le nom des colonnes, Akelos choisira lui-même leur type en se basant sur les conventions de nommage des tables SQL. Cependant, vous avez bien évidemment la possibilité de définir vous-même le typages des colonnes grâce à la syntaxe de PHP Adodb Maintenant que nous avons défini les tables, il ne reste plus qu’à les installer. Tapez la commande : ./script/migrate Booklink install Et pouf ! Les tables sont installées automagiquement ! Avec MySQL, vous devriez obtenir quelque chose du genre : TABLE “BOOKS” +--------------+--------------+------+-----+----------------+ | Field | Type | Null | Key | Extra | +--------------+--------------+------+-----+----------------+ | id | int(11) | NO | PRI | auto_increment | | title | varchar(255) | YES | | | | description | longtext | YES | | | | author_id | int(11) | YES | MUL | | | published_on | date | YES | | | +--------------+--------------+------+-----+----------------+ TABLE “AUTHORS” +-------+--------------+------+-----+----------------+ | Field | Type | Null | Key | Extra | +-------+--------------+------+-----+----------------+ | id | int(11) | NO | PRI | auto_increment | | name | varchar(255) | YES | | | +-------+--------------+------+-----+----------------+ Modèles, Vues, et ControlleursPour faire fonctionner vos applications, Akelos utilise le motif de conception appelé. Modèle-Vue-Contrôleur (MVC)
Les conventions de nommage dans AkelosLe nommage de chaque objet dans Akelos est très important, puisqu’il permet l’automatisation de son fonctionnement. Modèles
Contrôleurs
Vues
Utilisation du scaffolding dans AkelosAkelos fournit une méthode de scaffold, à savoir une générateur de code qui vous fera non seulement gagner du temps, mais pourra aussi servir de point de départ à la construction de votre application, ou à votre apprentissage. La magie du scaffoldÀ l’aide du scaffolding, vous allez générer le squelette d’une interface d’administration pour booklink, ce qui va vous permettre d’ajouter/éditer/supprimer des entrées dans la base de données. Tapez ces deux commandes : ./script/generate scaffold Book ./script/generate scaffold Author Cela va créer une multitude de fichiers là où il le faut, et le tout va fonctionner directement ! Sceptique ? Allez donc sur http://localhost/booklink/author et sur http://localhost/booklink/books, et vous pourrez d’ores et déjà gérer les livres et les auteurs dans votre base de données. Allez, je vous laisse un peu de temps pour vous amuser, et revenez me voir dès que vous êtes prêts à continuer. Le fonctionnement d’AkelosVoici une description rapide de comment Akelos réagi lorsqu’il répond à l’adresse : http://localhost/booklink/book/show/2
Si vous avez compris ce fonctionnement, je pense que vous pouvez d’ores et déjà commencer à modifier votre application. Faire la relation entre Books et AuthorsIl va maintenant falloir créer le lien entre la classe Book et la classe Author. Pour cela, il vous faudra utiliser la colonne author_id dans la base books Pour renseigner chacun des modèles sur la relation entre books et authors, il vous suffit de faire : /app/models/book.php <?php
class Book extends ActiveRecord
{
var $belongs_to = 'author'; // Un livre correspond à un auteur
}
?>/app/models/author.php <?php
class Author extends ActiveRecord
{
var $has_many = 'books'; // Un auteur peut posséder plusieurs livres
}
?>Les modèles savent maintenant comment ils sont liés, mais il faut que le contrôleur BookController puisse charger les deux modèles, author et book. /app/models/author.php <?php
class BookController extends ApplicationController
{
var $models = 'book, author'; // Cette ligne suffit à indiquer quels modèles utiliser
// ... code du controlleur
function show()
{
// Remplacer "$this->book = $this->Book->find(@$this->params['id']);"
// par celle-ci
$this->book = $this->Book->find(@$this->params['id'], array('include' => 'author'));
}
// suite et fin du code du controlleur
}La prochaine étape consiste à afficher les auteurs disponibles dans la base lors de l’ajout/édition d’un livre. Il suffit pour cela d’utiliser, dans la vue, la variable $form_options_helper. Juste après <?=$active_record_helper->error_messages_for('book');?>, dans le fichier /app/views/book/form.tpl, rajoutez le code suivant : /app/views/book/_form.tpl <p>
<label for="author">_{Author}</label><br />
<?=$form_options_helper->select('book', 'author_id', $Author->collect($Author->find(), 'name', 'id'));?>
</p>Si vous n’avez pas encore ajouté d’auteurs dans votre base de données (vilain garnement), c’est le moment de le faire. Vous pouvez donc désormais choisir l’auteur de chaque livre. C’est magnifique ! Mais vous avez sûrement remarqué que vous ne voyez pas l’auteur des livres dans la liste des livres. Ouvrez donc le fichier app/views/book/show.tpl, et juste après <? $content_columns = array_keys($Book->getContentColumns()); ?>, rajoutez : <label>_{Author}:</label> <span class="static">{book.author.name?}</span><br />Vous vous demandez sûrement ce que ces _{Author} ou autre {book.author.name?}. C’est en fait la syntaxe utilisée par Sintags dans les templates d’Akelos. Petite conclusionC’est tout pour le moment. Ce tutoriel continuera bien sûr d’évoluer, et il y en aura d’autres, car ce ne sont pas là les seules fonctionnalités d’Akelos ! Si vous voyez une faute de frappe ou de français, n’hésitez pas à me le faire savoir ! |
Sign in to add a comment