Les paramètres nommés sont généralement effectués sous forme de segments de route, mais sans nommer explicitement. Ainsi, par exemple, vous pouvez o quelque chose comme ceci:
Route:get('test/{id?}/{page?}/{opt?}', function ($id = null, $page = null, $opt = null) {
// do something
});
$id
, $page
et $opt
sont tous facultatifs ici tels que définis par le ?
dans les définitions de segment, et le fait qu'ils ont des valeurs par défaut dans la fonction. Cependant, vous remarquerez qu'il ya quelque chose d'un problème ici:
- Ils doivent apparaître dans l'URL dans l'ordre
- seulement
$opt
est vraiment facultative, $page
doit être fourni si $opt
est, et $id
doit être si $page
est
Ceci est une limitation provoquée par la façon dont les cartes Laravel segments appelés à fonctionner/paramètres de la méthode. Vous pourriez théoriquement mettre en œuvre votre propre logique pour faire ce travail, cependant:
Route:get('test/{first?}/{second?}/{third?}', function ($first = null, $second = null, $third = null) {
if ($first) {
list($name, $value) = @explode('=', $first, 2);
$$name = $value;
}
if ($second) {
list($name, $value) = @explode('=', $second, 2);
$$name = $value;
}
if ($third) {
list($name, $value) = @explode('=', $third, 2);
$$name = $value;
}
// you should now have $id, $page and $opt defined if they were specified in the segments
});
Non que ce soit une solution très naïve, en se fondant sur Exploding aveugle par =
ainsi que la définition du nom d'une variable arbitrairement entrée (qui est évidemment demander des ennuis). Vous devriez ajouter plus de vérification à ce code, mais cela devrait vous donner une idée de la façon de surmonter les deux problèmes mentionnés ci-dessus.
Il devrait probablement noter que cela va un peu contre la « bonne façon » de faire du routage et URIs Laravel, donc à moins que vous vraiment besoin de cette fonctionnalité, vous devez repenser la façon dont vous formez ces URIs à un manière que le cadre Laravel est plus mis en place pour.
id = 1 & page = 2 & opt = 1 est le classique, ancienne façon de transmettre les paramètres au serveur; id/1/page/2/opt/1 est la nouvelle façon de procéder. –
Comment s'appelle cette technique Andrew? Merci – clarenswd