Ludovic ROLAND - Le blog

Blog technique sur mes expériences de développeur

Symfony 1.4 : mettre en place le routage et l’url rewriting

| Comments

Suite à mes deux précédents billets sur Windows Phone 7, je vous propose de changer un peu de sujet et de se tourner un peu vers Symfony 1.4.

Vous l’aurez compris, le sujet de ce billet est de vous permettre de mettre place le routage et l’URL rewriting dans votre application web développé à l’aide de Symfony 1.4.

Le but de la manipulation

Comme vous vous en êtes probablement rendu compte, les url que proposent Symfony 1.4 par défaut sont un peu particulières puisque de la forme http://www.monsite.fr/module/action/param%C3%A8tre/valeur.

L’objectif de ce billet est de transformer ces URL en quelque chose de plus traditionnel à savoir une URL de la forme http://www.monsite.fr/module-action.html?param%C3%A8tre=valeur.

Le fichier routing.yml

Premier coup d’oeil

Tout ou presque se passe au niveau du fichier routing.yml.

Ce fichier se trouve dans le dossier de configuration de vos applications : monsite\apps\monapplication\config\routing.yml.

Si vous ouvrez ce fichier pour la première fois, voici ce que vous devriez voir :

routing.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/10-Routing

# default rules
homepage:
  url:   /
  param: { module: default, action: index }

# generic rules
# please, remove them by adding more specific rules
default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /:module/:action/*

Grâce au contenu du fichier routing.yml, on arrive assez facilement à repérer le schéma de construction d’une route :

1
2
3
nom_de_la_route:
  url:   /url_de_la_route
  param: { module: nom_du_module, action: nom_de_laction}

Construire sa premiere route

Nous allons donc construire notre première route ! Nous allons partir ici du principe que nous avons créé un module portant le nom main.

L’objectif est que dans notre application, les URL soient les suivants :

  • http://www.monsite.fr/main.html
  • http://www.monsite.fr/main-show.html?id=x**
  • http://www.monsite.fr/main-edit.html?id=x**
  • http://www.monsite.fr/main-delete.html?id=x**
  • http://www.monsite.fr/main-update.html?id=x**

Nous avons donc 5 routes à construire :

routing.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
main:
  url:   /main.html
  param: { module: main, action: index}

main-show:
  url:   /main-show.html
  param: { module: main, action: show}

main-edit:
  url:   /main-edit.html
  param: { module: main, action: edit}

main-delete:
  url:   /main-delete.html
  param: { module: main, action: delete}

main-update:
  url:   /main-update.html
  param: { module: main, action: update}

Attention lorsque vous écrivez vos routes ! Le langage utilisé est le YAML, et ce langage ne supporte pas les tabulations. Il faut utiliser ici la barre espace de votre clavier !

Changer les URL

Maintenant que vos routes sont en place, il faut modifier les URL de votre application de la façon suivante :

1
2
3
<a href="<?php echo url_for('/main.html'); ?>">Index</a>;

$this->redirect('/main.html');

Autre chose ?

Afin que nos routes soient complètement fonctionnelles, une dernière chose reste à faire : activer l’URL rewriting sur le serveur Apache.

Le module à activer se nomme rewrite_module.

C’est bon, le routage et l’URL rewriting devrait normalement fonctionner !

A lire aussi…

Comments