Lors de la correspondance de route, le routeur (classe route de niveau supérieur) renvoie certains
paramètres : les «valeurs par défaut» (paramètres répertoriés dans la section defaults
de la configuration
du routage) ainsi que tous les paramètres génériques extraits de la chaîne d'URL.
Dans votre contrôleur, vous devrez souvent récupérer ces paramètres. Nous l'avons déjà fait dans les exemples ci-dessus. Dans cette section, nous allons faire un résumé.
Pour récupérer un paramètre de la route dans la méthode d'action de votre contrôleur, vous utilisez
le plugin Params
et sa méthode fromRoute()
qui prend deux arguments : le nom du paramètre à récupérer
et la valeur à renvoyer si le paramètre n'est pas présent.
La méthode fromRoute()
peut également être utilisée pour récupérer tous les paramètres en même temps en
tant que tableau. Pour ce faire, appelez fromRoute()
sans arguments, comme indiqué dans l'exemple
ci-dessous :
// Un exemple d'action.
public function someAction()
{
// On récupère seulement le paramètre 'id' de la route.
$id = $this->params()->fromRoute('id', -1);
// On récupère tous les paramètres de route en même temps en tant que tableau.
$params = $this->params()->fromRoute();
//...
}
Lors de la correspondance d'une route, la classe de routage crée en interne une instance de la
classe Zend\Router\RouteMatch
, fournissant les méthodes d'extraction du nom de la route correspondant
et des paramètres extraits de cette route. Les méthodes utiles de la classe RouteMatch
sont listées dans le tableau 5.3 :
Nom de la méthode | Description |
---|---|
getMatchedRouteName() |
Récupère le nom de la route correspondante. |
getParams() |
Récupère tous les paramètres. |
getParam($name, $default) |
Récupère un paramètre spécifique. |
Dans la plupart des cas, il suffira d'utiliser le plugin
Params
mais vous pouvez également utiliser l'objetRouteMatch
pour accomplir la même tâche.
Pour obtenir l'objet RouteMatch
de la méthode d'action de votre contrôleur,
vous pouvez utiliser le code suivant :
// Un exemple d'action.
public function someAction()
{
//On récupère l'objet RouteMatch.
$routeMatch = $this->getEvent()->getRouteMatch();
// On récupère le nom de la route correspondant.
$routeName = $routeMatch->getMatchedRouteName();
// On récupère tous les paramètres de route en même temps sous forme tableau.
$params = $routeMatch->getParams();
//...
}
Dans la ligne 5 du code ci-dessus, nous utilisons la méthode getEvent()
de la classe de base
AbstractActionController
pour récupérer l'objet MvcEvent
qui représente l'événement
(dans ZF3, le cycle de vie de l'application est constitué d'événements). Nous utilisons ensuite la méthode
getRouteMatch()
de la classe MvcEvent
pour récupérer l'objet RouteMatch
.
À la ligne 8, nous utilisons la méthode getMatchedRouteName()
pour récupérer le nom de la route
correspondant à la requête HTTP, et à la ligne 11, nous récupérons tous les paramètres de la route.
La classe MvcEvent
peut également être utilisée pour récupérer le routeur (la classe route de niveau
supérieur). Vous pouvez le faire avec la méthode getRouter()
de la classe MvcEvent
, comme ci-dessous :
// Appelé à l'intérieur de votre méthode d'action
// pour récupérer le RouteStackInterface pour la classe de routage.
$router = $this->getEvent()->getRouter();
Dans le code ci-dessus, nous utilisons la méthode getRouter()
qui renvoie l'interface
RouteStackInterface
. Cette interface est l'interface de base pour SimpleRouteStack
et TreeRouteStack
. Elle fournit les méthodes pour travailler avec les
routes contenues dans la pile de route.