// 定义GET请求路由规则 并设置URL后缀为html的时候有效
Route::get('new/:id', 'News/read')
->ext('html');
複数のサフィックスの一致をサポートします。例:
Route::get('new/:id', 'News/read')
->ext('shtml|html');
ext メソッドが値を渡さない場合は、サフィックス アクセスが許可されていないことを意味します。
アクセスを禁止する URL サフィックスを設定できます。例:
// 定义GET请求路由规则 并设置禁止URL后缀为png、jpg和gif的访问
Route::get('new/:id', 'News/read')
->denyExt('jpg|png|gif');
denyExt メソッドが値を渡さない場合、アクセスにはそのサフィックスを使用する必要があることを意味します。
ドメイン名の検出
検出に完全なドメイン名またはサブドメイン名の使用をサポートします。例:
// 完整域名检测 只在news.thinkphp.cn访问时路由有效
Route::get('new/:id', 'News/read')
->domain('news.thinkphp.cn');
// 子域名检测
Route::get('new/:id', 'News/read')
->domain('news');
定義する必要がある場合サブドメイン名のバッチ ルーティング ルールの場合、ルーティング定義にドメイン メソッドを使用することをお勧めします。
HTTPS 検出
現在の HTTPS アクセスの検出をサポート
// 必须使用HTTPS访问
Route::get('new/:id', 'News/read')
->https();
AJAX/PJAX/JSON 検出
現在のリクエストが AJAX/PJAX/JSON であるかどうかを検出できます。
// 必须是JSON请求访问
Route::get('new/:id', 'News/read')
->json();
リクエスト変数の検出
ルーティング アドレスの一致に加えて、指定されたリクエスト変数が一致する場合にのみ、リクエスト変数が一致するかどうかをさらにチェックできます。このルートに一致するようにも一貫しています。
// 检查type变量
Route::post('new/:id', 'News/save')
->filter('type', 1);
// 检查多个请求变量
Route::post('new/:id', 'News/save')
->filter([ 'type' => 1,'status'=> 1 ]);
追加パラメータの追加
ルートを定義するときに追加パラメータを暗黙的に追加できます。これらのパラメータは URL アドレスには表示されません。
Route::get('blog/:id', 'Blog/read')
->append(['app_id' => 1, 'status' => 1]);
リクエストをルーティングするとき、app_id と status の 2 つのパラメーターが同時に渡されます。
ルート バインディング モデル
ルーティング ルールとグループ化は、バインディング モデル データをサポートします。例:
Route::get('hello/:id', 'index/hello')
->model('id', '\app\index\model\User');
は、現在のルート セットを自動的にバインドします。現在のルーティング変数値のユーザー モデル データとしての id。
モデル バインディングで ID をクエリ条件として使用する場合、次のメソッドに簡略化することもできます。
Route::get('hello/:id', 'index/hello')
->model('\app\index\model\User');
デフォルトでは、モデル データがクエリされない場合、例外がスローされます。例外をスローしたくない場合は、
Route::rule('hello/:id', 'index/hello')
->model('id', '\app\index\model\User', false);
を使用してモデル データのクエリ条件を定義できます。例:
Route::rule('hello/:name/:id', 'index/hello')
->model('id&name', '\app\index\model\User');
は、クエリ ID と名前の値が現在のルーティング変数のモデル データと等しいことを示します。
クロージャを使用して、返される必要なモデル オブジェクトをカスタマイズすることもできます。
Route::rule('hello/:id', 'index/hello')
->model(function ($id) {
$model = new \app\index\model\User;
return $model->where('id', $id)->find();
});
クロージャ関数のパラメータは、現在のリクエストの URL 変数情報です。
バインドされたモデルは、コントローラーのアーキテクチャ メソッドまたは操作メソッドに直接自動的に注入できます。詳細については、リクエストの章の依存関係の注入を参照してください。
リクエスト キャッシュ
現在のルーティング リクエストのキャッシュ処理をリクエストできます。例:
Route::get('new/:name$', 'News/read')
->cache(3600);
は、現在のルーティング リクエストに対して 3600 をキャッシュすることを意味します。ルーティング リクエストの秒数 詳細については、「リクエスト キャッシュ」セクションを参照してください。
ルーティングミドルウェア
ルーティングミドルウェアを使用できます。登録方法は次のとおりです:
Route::rule('hello/:name','hello')
->middleware('Auth');
またはルーティンググループにミドルウェアを登録します。
Route::group('hello', function(){
Route::rule('hello/:name','hello');
})->middleware('Auth');
追加のパラメーターをミドルウェアに渡す必要がある場合は、
Route::rule('hello/:name','hello')
->middleware('Auth:admin');
を使用できます。定数定義を使用する場合は、2 番目のパラメーターでミドルウェア パラメーターを渡すことができます。
Route::rule('hello/:name','hello')
->middleware(Auth::class, 'admin');
複数のミドルウェアを定義する必要がある場合は、配列メソッド
Route::rule('hello/:name','hello')
->middleware([Auth::class, 'Check']);
を使用して、同じ追加パラメータ
Route::rule('hello/:name','hello')
->middleware([Auth::class, 'Check'], 'admin');
を渡すことも、ミドルウェア パラメータを個別に指定することもできます。
Route::rule('hello/:name','hello')
->middleware(['Auth:admin', 'Check:editor']);
動的パラメータ
追加のルーティング パラメータをカスタマイズする必要がある場合は、次の方法を使用できます:
Route::get('new/:name$', 'News/read')
->option('rule','admin');
または動的メソッドを使用します。
Route::get('new/:name$', 'News/read')
->rule('admin');
後続のルーティング アクションの後、ルートのルール パラメーターを呼び出して権限チェックを実行できます。