Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version

Le fichier de configuration routing.yml

1.4
Symfony version
1.2
Language

Le fichier de configuration routing.yml permet la définition des routes.

Le fichier de configuration principal routing.yml peut être trouvé dans le répertoire apps/APP_NAME/config/.

Le fichier de configuration routing.yml contient une liste de définitions de route nommées :

ROUTE_1:
  # definition de la route 1
 
ROUTE_2:
  # definition de la route 2
 
# ...

Quand une requête arrive, le système de routage essaie de faire correspondre une route à une URL entrante. La première route qui correspond gagne, ainsi l'ordre dans lequel les routes sont définies dans le fichier de configuration est important.

Lorsque le fichier de configuration routing.yml est lu, chaque route est convertie en un objet de la classe class :

ROUTE_NAME:
  class: CLASS_NAME
  # configuration si la route

Le nom class doit étendre la classe de base sfRoute. S'il n'est pas fourni, la classe de base sfRoute est utilisée comme solution de repli.

note

Le fichier de configuration routing.yml est mis en cache dans un fichier PHP; le processus est automatiquement géré par la classe sfSecurityConfigHandler.

Les classes de la route

Configuration de la route

Le fichier de configuration routing.yml supporte plusieurs paramètres pour configurer d'avantages les routes. Ces paramètres sont utilisé par la classe sfRoutingConfigHandler pour convertir chaque route en un objet.

class

Par défaut : sfRoute (ou sfRouteCollection si type est à collection, voir ci-dessous)

Le paramètre class permet de modifier la classe de la route pour utiliser la route.

url

Par défaut : /

Le paramètre url est le modèle qui doit correspondre à une URL entrante pour la route pour être utilisée par la requête courante.

Le modèle est constitué de segments :

  • variables (un mot préfixé avec deux points :)
  • constantes
  • un astérisque (*) pour correspondre à une séquence de paire clé/valeur

Chaque segment doit être séparé par un des séparateurs prédéfinis (/ ou . par défaut).

params

Par défaut : Un tableau vide

Le paramètre params définit un tableau de paramètres associé avec la route. Ils peuvent être des valeurs par défaut pour les variables contenues dans url, ou toute autre variable pertinente pour cette route.

param

Par défaut : Un tableau vide

Ce paramètre est équivalent au paramètre params.

options

Par défaut : Un tableau vide

Le paramètre options est un tableau d'options qui seront transmis à l'objet route pour personnaliser encore plus son comportement. Les sections suivantes décrivent les options disponibles pour chaque classe route.

requirements

Par défaut : Un tableau vide

Le paramètre requirements est un tableau de conditions qui doivent être satisfaits par les variables de url. Les clés sont les variables d'url et les valeurs sont des expressions régulières dont les valeurs des variables doivent correspondre.

tip

L'expression régulière sera inclus dans une autre expression régulière, et de ce fait, vous n'avez pas besoin de les envelopper entre des séparateurs, ni les lier avec ^ ou $ pour correspondre à la valeur complète.

type

Par défaut : null

Si sa valeur est collection, la route sera lue comme une collection de route.

note

Ce paramètre est automatiquement réglé sur collection par la classe de gestionnaire configuration si le nom de class contient le mot Collection. Cela signifie que la plupart du temps, vous n'avez pas besoin d'utiliser ce paramètre.

sfRoute

Toutes les classes de route étendent la classe de base sfRoute, qui fournit les paramètres requis pour configurer une route.

sfRequestRoute

sf_method

Par défaut : get

L'option sf_method est utilisée dans le tableau requirements. Il fait appliquer la requête HTTP dans la route correspondante au processus.

sfObjectRoute

Toutes les options suivantes de sfObjectRoute doivent être utilisées dans le paramètre options du fichier de configuration routing.yml.

model

L'option model est obligatoire et elle est le nom de la classe du modèle pour être associée avec la route courante.

type

L'option type est obligatoire et elle est le type de route que vous voulez pour votre modèle. Il peut être soit object ou list. Une route de type object réprésente un unique objet du modèle, et une route de type list représente une collection d'objets du modèle.

method

L'option method est obligatoire. C'est la méthode qui fait appel à la classe du modèle pour retourner le(s) objet(s) associé(s) avec la route. Cela doit être une méthode 'static'. La méthode est appelée avec les paramètres de la route analysée comme argument.

allow_empty

Par défaut : true

Si l'option allow_empty est à false, la route lèvera une exception 404 si aucun objet n'est retourné par l'appel de la method du model.

convert

Par défaut : toParams

L'option convert est une méthode à appeler pour convertir un objet du modèle vers un tableau de paramètres appropriés pour générer une route en fonction de cet objet du modèle. Elle doit retournée un tableau avec au moins les paramètres nécessaires de la structure de la route (comme défini par le paramètre url).

sfPropelRoute

method_for_criteria

Par défaut : doSelect pour les collections, doSelectOne pour les objets unique

L'option method_for_criteria définit la méthode appelée sur la classe Peer du modèle pour récupérer le(s) objet(s) associé(s) à la requête courante. La méthode est appelée avec les paramètres de la route analysée comme un argument.

sfDoctrineRoute

method_for_query

Par défaut : none

L'option method_for_query définit la méthode appelée sur la classe Peer du modèle pour récupérer le(s) objet(s) associé(s) à la requête courante. L'objet de la query courante est passé comme un argument.

Si l'option n'est pas définie, la requête est simplement «exécutée» par la méthode execute().

sfRouteCollection

La classe de base sfRouteCollection représente une collection de routes.

sfObjectRouteCollection

model

L'option model est obligatoire et elle a le nom de la classe modèle pour être associée avec la route courante.

actions

Par défaut : false

L'option actions définit un tableau d'actions autorisés pour le route. Les actions doivent être un sous-ensemble de toutes les actions disponibles : list, new, create, edit, update, delete, et show.

Si l'option est définie à false, la valeur par défaut, toutes les actions seront disponibles, sauf pour celle de show si l'option with_show est définie à false (voir ci-dessous).

module

Par défaut : Le nom de la route

L'option module définit le nom du module.

prefix_path

Par défaut : / suivi par le nom de la route

L'option prefix_path définit un préfixe à ajouter avant toutes les modèles d'url. Cela peut être n'importe quel modèle valable et peut contenir des variables et plusieurs segments.

column

Par défaut : id

L'option column définit la colonne du modèle à utiliser comme unique identifiant pour l'objet du modèle.

with_show

Par défaut : true

L'option with_show est utilisée lorsque l'option actions est à false pour déterminer si l'action show doit être incluse dans la liste des actions autorisées pour la route.

segment_names

Par défaut : array('edit' => 'edit', 'new' => 'new'),

Le segment_names définit les mots à utiliser dans les modèles url pour les actions edit et new.

model_methods

Par défaut : Un tableau vide

L'option model_methods définit les méthodes à appeler pour récupérer le(s) objet(s) à partir du modèle (voir l'option de method de sfObjectRoute). Ceci est en réalité un tableau définissant les méthodes list et object.

model_methods:
  list:   getObjects
  object: getObject

requirements

Par défaut : \d+ pour column

L'option requirements définit un tableau de conditions à appliquer aux variables de route.

with_wildcard_routes

Par défaut : false

L'option with_wildcard_routes permet à toute action d'être accessible par deux routes : une pour un seul objet, et une autre pour les collections d'objets.

route_class

Par défaut : sfObjectRoute

L'option route_class peut surchargée l'objet par défaut de la route utilisé pour une collection.

collection_actions

Par défaut : Un tableau vide

L'option collection_actions définit un tableau d'actions supplémentaires disponibles pour les routes de collection. Les clés sont les noms de l'action et les valeurs sont les méthodes valide pour l'action :

articles: 
  options: 
    collection_actions: { filter: post, filterBis: [post, get] } 
    # ...

object_actions

Par défaut : Un tableau vide

L'option object_actions définit un tableau d'actions supplémentaires disponibles pour les routes d'objet. Les clés sont les noms de l'action et les valeurs sont les méthodes valide pour l'action :

articles: 
  options: 
    object_actions: { publish: put, publishBis: [post, put] } 
    # ...

sfPropelRouteCollection

La classe de route sfPropelRouteCollection étend sfRouteCollection, et change la classe de route par défaut par sfPropelRoute (voir l'option route_class ci-dessus).

sfDoctrineRouteCollection~

La classe de route sfDoctrineRouteCollection étend sfRouteCollection, et change la classe de route par défaut par sfDoctrineRoute (voir l'option route_class ci-dessus).