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).
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.