ルーティング変数のルール


ルーティング変数ルール

ルーティング ルールをマスターするには、正規表現の基本的な知識が必要です

システムのデフォルトの変数ルール設定は \w で、文字、数字、中国語、下線文字のみに一致し、特殊記号やその他の文字には一致しません。変数ルールを定義するか、デフォルトの変数ルールを調整する必要があります。

アンダースコア文字の一致を追加するなど、ルーティング構成ファイル内のデフォルトの変数ルールをカスタマイズできます。

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

ルール ルーティングでの変数ルールの指定をサポートし、制限できないことを補います。動的変数、特定のタイプの問題、およびグローバル ルール設定をサポートします。使用法は次のとおりです:

ローカル変数ルール

ローカル変数ルールは現在のルートでのみ有効です:

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

不要先頭に ^ を追加するか、末尾に $ を追加します。モード修飾子はサポートされていないため、システムが自動的に追加します。

#グローバル変数ルール

グローバル変数ルールを設定します。すべてのルートが有効です:

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

結合変数

ルーティング ルールが特殊な場合は、ルートを定義するときに組み合わせ変数を使用できます。


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

変数を組み合わせる利点は、ルーティング ルールに固定の区切り文字がないことです。必要な変数ルールと区切り文字を自由に組み合わせることができます。たとえば、ルーティング ルールは次のサポートに変更できます:

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+']);

結合された変数を使用するときにオプションの変数を使用する必要がある場合は、次の方法を使用できます:

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

ダイナミック ルーティング

ルーティング ルールの変数をルーティング アドレスに渡して、動的ルーティングを実装できます。例:

// 定义动态路由
Route::get('hello/:name', 'index/:name/hello');

名前の値変数はルーティング アドレスとして渡されます。

動的ルーティングの変数は、変数とアセンブリの組み合わせもサポートします。例:

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