Comment les itinéraires-cadres sont définis
Le routage est une technologie permettant de localiser les ressources du serveur accessibles !
Enregistrement d'une route
La méthode de définition de route la plus basique est : `Route::rule('routing expression') , 'Adresse de routage', 'Type de demande')`
use think\facade\Route;
Prenons l'exemple d'une seule application :
// 注册路由到News控制器的read操作 Route::rule('new/:id','News/read');
Lorsque nous visitons :
http://serverName/new/5
, elle sera automatiquement acheminée vers :
http://serverName/news/read/id/5
et l'adresse d'accès d'origine sera deviennent automatiquement invalides.
Vous pouvez spécifier le type de requête dans la méthode de règle (s'il n'est pas spécifié, tout type de requête sera valide par défaut), par exemple :
Route::rule('new/:id', 'News/update', 'POST');
Le paramètre de type de requête n'est pas sensible à la casse.
signifie que les règles de routage définies ne sont valables que sous les requêtes POST. Si vous souhaitez définir les règles de routage supportées par les requêtes GET et POST, vous pouvez utiliser :
Route::rule('new/:id','News/read','GET|POST');
Mais généralement nous recommandons d'utiliser la méthode de raccourci correspondant au type de requête, notamment :
Type | Description | Méthode de raccourci |
---|---|---|
GET | GET request | get |
POST | POST request | post |
PUT | P Demande UT | put |
DELETE | DELETE request | delete |
PATCH | PATCH request | patch |
* | tout type de demande | any |
L'utilisation de la méthode d'enregistrement rapide est :
Route::nom de la méthode de raccourci (« expression de routage », « adresse de routage »)
Les exemples d'utilisation sont les suivants :
Route::get('new/<id>','News/read'); // 定义GET请求路由规则 Route::post('new/<id>','News/update'); // 定义POST请求路由规则 Route::put('new/:id','News/update'); // 定义PUT请求路由规则 Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则 Route::any('new/:id','News/read'); // 所有请求都支持的路由规则
Après avoir enregistré plusieurs règles de routage, le le système procédera en séquence à parcourir les règles de routage enregistrées qui répondent au type de demande. Une fois que la règle de routage correcte correspond, la méthode de planification finale sera exécutée et les règles suivantes ne seront plus détectées.
Expressions de règles
Les expressions de règles incluent généralement des règles statiques et des règles dynamiques, ainsi qu'une combinaison des deux règles. Par exemple, les expressions suivantes sont toutes des expressions de règles valides :
Route::rule('/', 'index'); // 首页访问路由 Route::rule('my', 'Member/myinfo'); // 静态地址路由 Route::rule('blog/:id', 'Blog/read'); // 静态地址和动态地址结合 Route::rule('new/:year/:month/:day', 'News/read'); // 静态地址和动态地址结合 Route::rule(':user/:blog_id', 'Blog/read'); // 全动态地址
La définition des expressions régulières prend /. comme délimiteur de paramètre (quel que soit le paramètre de délimiteur PATH_INFO, assurez-vous d'utiliser/effectuer le fractionnement des paramètres d'URL de manière uniforme lors de la définition des expressions de règle de routage, sauf si vous utilisez des variables combinées).
Chaque paramètre peut inclure des variables dynamiques, par exemple : les variables ou <variables> représentent toutes deux des variables dynamiques (la nouvelle version recommande d'utiliser la deuxième méthode, qui est plus propice à la définition de variables mixtes), et seront automatiquement liées aux variables correspondantes. paramètre de méthode de fonctionnement.
Votre délimiteur d'accès URL PATH_INFO est configuré à l'aide de pathinfo_depr, mais quelle que soit la configuration, il n'affecte pas la définition du délimiteur de routage de l'expression de la règle de routage.
Variables facultatives
prend en charge la définition facultative des paramètres de routage, par exemple :
Route::get('blog/:year/[:month]','Blog/archive'); // 或者 Route::get('blog/<year>/<month?>','Blog/archive');
Lorsque la variable est incluse avec [ ], cela signifie que la variable est une variable facultative pour la correspondance d'itinéraire.
Après avoir défini les règles de routage ci-dessus, les adresses d'accès URL suivantes peuvent être associées à l'itinéraire correct :
http://serverName/index.php/blog/2015 http://serverName/index.php/blog/2015/12
Après avoir utilisé des définitions de variables facultatives, les situations qui nécessitaient auparavant de définir deux ou plusieurs règles de routage peuvent être fusionnées en une seule règle de routage.
Les paramètres facultatifs ne peuvent être placés qu'à la fin des règles de routage. Si des paramètres facultatifs sont utilisés au milieu, les variables suivantes deviendront des paramètres facultatifs.
Correspondance exacte
Lors de la détection de correspondance de règle, la valeur par défaut est de faire correspondre l'URL depuis le début. Tant que le début de l'adresse URL contient la règle de routage définie, la correspondance sera réussie si vous le souhaitez. URL pour qu'elle corresponde complètement, vous pouvez l'ajouter à la fin de l'expression de routage. Utilisez le symbole $, par exemple :
Route::get('new/:cate$', 'News/category');
Après cette définition,
http://serverName/index.php/new/info
correspondra avec succès, mais
http://serverName/index.php/new/info/2
ne correspondra pas avec succès.
S'il est défini de la manière
Route::get('new/:cate', 'News/category');
, les deux méthodes d'accès à l'URL peuvent être mises en correspondance avec succès.
Si vous devez faire correspondre entièrement l'URL globalement, vous pouvez définir
// 开启路由完全匹配 'route_complete_match' => true,
paramètres supplémentaires dans le fichier de configuration de routage
Prend en charge des paires de paramètres entrants supplémentaires lors des sauts de routage (les paramètres supplémentaires font référence à des paramètres qui ne sont pas dans l'URL , passer implicitement les opérations requises peut parfois jouer un certain rôle dans la protection de la sécurité, que nous évoquerons plus tard). Par exemple :
Route::get('blog/:id','blog/read') ->append(['status' => 1, 'app_id' =>5]);
Dans la définition de la règle de routage ci-dessus, les paramètres status et app_id n'existent pas dans l'URL et sont des transferts de valeurs implicites. Bien sûr, ils ne sont pas nécessairement nécessaires, mais peuvent être utilisés en cas de besoin. Différents paramètres supplémentaires peuvent être définis pour différents itinéraires.
S'il y a un conflit entre les variables de la méthode append et les règles de routage, celle transmise dans la méthode append aura priorité.
RouteIdentifiant
Si vous avez besoin de générer rapidement une adresse URL basée sur l'itinéraire, vous pouvez spécifier l'identifiant de génération lors de la définition de l'itinéraire (mais assurez-vous qu'il est unique).
Par exemple,
// 注册路由到News控制器的read操作 Route::rule('new/:id','News/read') ->name('new_read');
peut être utilisé lors de la génération d'adresses de routage
url('new_read', ['id' => 10]);
Si aucun identifiant de routage n'est défini, le système utilisera l'adresse de routage comme identifiant de routage par défaut. Par exemple, la méthode suivante peut être utilisée pour. générer
url('News/read', ['id' => 10]);
routage forcé
Définissez simplement les règles de routage pour la page d'accueil de
'url_route_must' => true,
dans le fichier de configuration de routage. Par exemple, la route suivante génère Hello, world!
Route::get('/', function () { return 'Hello,world!'; })
.