Que savez-vous des paramètres de routage ?
Paramètres de routage
Le regroupement de routage et les définitions de règles prennent en charge la spécification des paramètres de routage, qui complètent principalement la détection de correspondance d'itinéraire et les actions ultérieures.
Les paramètres de routage peuvent être transmis directement (par lots) lors de la définition des règles de routage. Il est recommandé d'utiliser la méthode pour la configurer plus clairement.
Paramètres | Description | Nom de la méthode |
---|---|---|
ext | Détection de suffixe d'URL, prend en charge la correspondance de plusieurs suffixes | ext |
deny_ext | URL interdit la détection de suffixe, correspondance prise en charge plusieurs suffixes | denyExt |
https | Détecter si la requête https | https |
domain | La détection du nom de domaine | domain |
complete_match | est terminée Parcours du match | completeMatch |
model | Lier le modèle | model |
cache | Demande de cache | cache |
ajax | Détection Ajax | ajax |
pjax | Détection Pjax | pjax |
json | Détection JSONEnregistrer le middleware de routage | middleware |
filter | Filtrer les variables de demande | filter |
Exemple d'utilisation : | ||
Si vous devez définir des paramètres de routage par lots, vous pouvez également utiliser la méthode des options. | Route::get('new/:id', 'News/read') ->option([ 'ext' => 'html', 'https' => true ]); | Suffixe d'URL |
Si le suffixe d'URL est globalement unifié, vous pouvez définir le paramètre url_html_suffix dans le fichier de configuration de l'application route.php si le suffixe d'URL dans l'adresse URL actuellement consultée est un pseudo-autorisé. suffixe statique, alors le suffixe Il ne sera pas transmis en tant que valeur de paramètre. | Les différences entre les différents réglages des paramètres sont les suivantes : |
Valeur de configuration
Description
false
L'accès pseudo-statique est interdit
chaîne vide
Autoriser tout suffixe pseudo-statique
html|htm | |
---|---|
false | 禁止伪静态访问 |
空字符串 | 允许任意伪静态后缀 |
html // 定义GET请求路由规则 并设置URL后缀为html的时候有效 Route::get('new/:id', 'News/read') ->ext('html'); prend en charge la correspondance de plusieurs suffixes, par exemple : Route::get('new/:id', 'News/read') ->ext('shtml|html'); Si la méthode ext ne transmet aucune valeur, cela signifie qu'aucun accès par suffixe n'est autorisé. Vous pouvez définir un suffixe d'URL dont l'accès est interdit, par exemple : // 定义GET请求路由规则 并设置禁止URL后缀为png、jpg和gif的访问 Route::get('new/:id', 'News/read') ->denyExt('jpg|png|gif'); Si la méthode denyExt ne transmet aucune valeur, cela signifie que le suffixe doit être utilisé pour l'accès. Détection de nom de domaine prend en charge l'utilisation de noms de domaine complets ou de noms de sous-domaines pour la détection, par exemple : // 完整域名检测 只在news.thinkphp.cn访问时路由有效 Route::get('new/:id', 'News/read') ->domain('news.thinkphp.cn'); // 子域名检测 Route::get('new/:id', 'News/read') ->domain('news'); Si vous devez définir des règles de routage par lots pour les noms de sous-domaines, il est recommandé d'utiliser la méthode de domaine pour définition du routage. Détection HTTPS Prend en charge la détection de l'accès HTTPS actuel // 必须使用HTTPS访问 Route::get('new/:id', 'News/read') ->https(); Détection AJAX/PJAX/JSON Peut détecter si la requête actuelle est AJAX/PJAX/JSON. // 必须是JSON请求访问 Route::get('new/:id', 'News/read') ->json(); Détection des variables de requête En plus de faire correspondre l'adresse de routage, vous pouvez également vérifier si les variables de requête correspondent. Ce n'est que lorsque les variables de requête spécifiées sont également cohérentes que l'itinéraire peut être mis en correspondance. // 检查type变量 Route::post('new/:id', 'News/save') ->filter('type', 1); // 检查多个请求变量 Route::post('new/:id', 'News/save') ->filter([ 'type' => 1,'status'=> 1 ]); Ajouter des paramètres supplémentaires Vous pouvez implicitement ajouter des paramètres supplémentaires lors de la définition de l'itinéraire. Ces paramètres n'apparaîtront pas dans l'adresse URL. Route::get('blog/:id', 'Blog/read') ->append(['app_id' => 1, 'status' => 1]); Lors du routage des demandes, deux paramètres, app_id et status, seront transmis en même temps. Modèle de liaison d'itinéraire Les règles de routage et le regroupement prennent en charge les données de modèle de liaison, par exemple : Route::get('hello/:id', 'index/hello') ->model('id', '\app\index\model\User'); liera automatiquement les données du modèle utilisateur avec l'identifiant de la valeur actuelle de la variable de routage à l'itinéraire actuel. Si votre liaison de modèle utilise l'identifiant comme condition de requête, elle peut également être simplifiée avec la méthode suivante Route::get('hello/:id', 'index/hello') ->model('\app\index\model\User'); Par défaut, si les données du modèle ne sont pas interrogées, une exception sera levée si vous ne souhaitez pas lancer d'exception. exception, vous pouvez utiliser Route::rule('hello/:id', 'index/hello') ->model('id', '\app\index\model\User', false); pour définir des conditions de requête pour les données du modèle, par exemple : Route::rule('hello/:name/:id', 'index/hello') ->model('id&name', '\app\index\model\User'); indique que les valeurs de l'identifiant et du nom de la requête sont égales aux données du modèle de la variable de routage actuelle. Vous pouvez également utiliser des fermetures pour personnaliser les objets de modèle requis renvoyés Route::rule('hello/:id', 'index/hello') ->model(function ($id) { $model = new \app\index\model\User; return $model->where('id', $id)->find(); }); Les paramètres de la fonction de fermeture sont les informations variables d'URL de la requête en cours. Le modèle lié peut être automatiquement injecté directement dans la méthode d'architecture ou la méthode de fonctionnement du contrôleur. Pour plus de détails, veuillez vous référer à l'injection de dépendances dans le chapitre demande. Request caching peut effectuer le traitement de mise en cache des demandes sur la demande de routage actuelle. Par exemple : Route::get('new/:name$', 'News/read') ->cache(3600); signifie mettre en cache la demande de routage actuelle pendant 3 600 secondes. Pour plus d'informations, veuillez vous référer à la section Mise en cache des demandes. Middleware de routage Vous pouvez utiliser le middleware de routage. La méthode d'enregistrement est la suivante : Route::rule('hello/:name','hello') ->middleware('Auth'); ou enregistrez le middleware pour le groupe de routage Route::group('hello', function(){ Route::rule('hello/:name','hello'); })->middleware('Auth'); Si vous devez transmettre des paramètres supplémentaires au middleware, vous pouvez utiliser Route::rule('hello/:name','hello') ->middleware('Auth:admin'); Si vous utilisez est défini en mode constant, et les paramètres du middleware peuvent être transmis comme deuxième paramètre. Route::rule('hello/:name','hello') ->middleware(Auth::class, 'admin'); Si vous devez définir plusieurs middlewares, utilisez la méthode array Route::rule('hello/:name','hello') ->middleware([Auth::class, 'Check']); pour transmettre le même paramètre supplémentaire Route::rule('hello/:name','hello') ->middleware([Auth::class, 'Check'], 'admin'); ou spécifiez les paramètres du middleware individuellement. Route::rule('hello/:name','hello') ->middleware(['Auth:admin', 'Check:editor']); Paramètres dynamiques Si vous devez personnaliser certains paramètres de routage supplémentaires, vous pouvez utiliser la méthode suivante : Route::get('new/:name$', 'News/read') ->option('rule','admin'); ou utiliser la méthode dynamique Route::get('new/:name$', 'News/read') ->rule('admin'); Vous pouvez appeler les paramètres de règle de l'itinéraire après les actions de routage ultérieures . Vérification des autorisations.
|