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.


Détection JSON Enregistrer le middleware de routage middlewarefilterFiltrer les variables de demandefilterExemple d'utilisation :
Route::get('new/:id', 'News/read')
    ->ext('html')
    ->https();
Ces paramètres de routage peuvent être mélangés Tant qu'un paramètre ne réussit pas le contrôle, l'itinéraire actuel le sera. ne prennent pas effet et continuent de détecter les règles de routage ultérieures. Si vous devez définir des paramètres de routage par lots, vous pouvez également utiliser la méthode des options.
ParamètresDescriptionNom de la méthode
extDétection de suffixe d'URL, prend en charge la correspondance de plusieurs suffixesext
deny_extURL interdit la détection de suffixe, correspondance prise en charge plusieurs suffixesdenyExt
httpsDétecter si la requête httpshttps
domainLa détection du nom de domainedomain
complete_match est terminée Parcours du matchcompleteMatch
modelLier le modèlemodel
cacheDemande de cachecache
ajaxDétection Ajaxajax
pjax Détection Pjaxpjax
json
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

falseL'accès pseudo-statique est interdit

chaîne vide

Autoriser tout suffixe pseudo-statique


htmlAutoriser uniquement les suffixes pseudo-statiques définishtml|htmAutoriser plusieurs suffixes pseudo-statiques
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.