Règles de variables de routage


Règles de variables de routage

Pour maîtriser les règles de routage, vous devez avoir des connaissances de base en expressions régulières

Le paramètre de règle variable par défaut du système est w+, qui ne fera correspondre que les lettres, les chiffres, le chinois et le soulignement. caractères, et non Il fera correspondre les symboles spéciaux et autres caractères, et vous devez définir des règles de variable ou ajuster les règles de variable par défaut.

Vous pouvez personnaliser les règles de variable par défaut dans le fichier de configuration de routage, par exemple en ajoutant une correspondance de caractères de soulignement :

'default_route_pattern'	=>	'[\w\-]+',

Prend en charge la spécification de règles de variable dans le routage de règles, ce qui compense le problème selon lequel les variables dynamiques ne peuvent pas limiter des types spécifiques et prend en charge paramètres de règle globale. L'utilisation est la suivante :

Règles de variables locales

Les règles de variables locales ne sont valables que dans l'itinéraire actuel :

// 定义GET请求路由规则 并设置name变量规则
Route::get('new/:name', 'News/read')
    ->pattern(['name' => '[\w|\-]+']);

Il n'est pas nécessaire d'ajouter ^ au début ou $ à la fin, et les modificateurs de mode sont non pris en charge. Le système les ajoutera automatiquement.

Règles de variables globales

Définissez des règles de variables globales, tous les itinéraires sont valides :

// 支持批量添加
Route::pattern([
    'name' => '\w+',
    'id'   => '\d+',
]);

Variables combinées

Si vos règles de routage sont spéciales, vous pouvez utiliser des variables combinées lors de la définition des itinéraires.

Par exemple

Route::get('item-<name>-<id>', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);

L'avantage des variables combinées est qu'il n'y a pas de séparateurs fixes dans les règles de routage. Vous pouvez combiner les règles de variables et les séparateurs requis à volonté. Par exemple, les règles de routage peuvent être modifiées comme suit pour prendre en charge. :

Route::get('item<name><id>', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);
Route::get('item@<name>-<id>', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);

L'utilisation de variables combinées Si vous devez utiliser des variables facultatives, vous pouvez utiliser la méthode suivante :

Route::get('item-<name><id?>', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);

Routage dynamique

Vous pouvez transmettre les variables dans les règles de routage dans l'adresse de routage à implémentez un routage dynamique, par exemple :

La valeur de la variable
// 定义动态路由
Route::get('hello/:name', 'index/:name/hello');

name est transmise comme adresse de routage.

Les variables du routage dynamique prennent également en charge les variables combinées et l'assemblage, par exemple :

Route::get('item-<name>-<id>', 'product_:name/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);