フレームワークルートの定義方法
ルーティングは、アクセスするサーバー リソースを見つけるテクノロジです。
# ルートの登録
最も基本的なルート定義方法は次のとおりです: `Route::rule('ルーティング式', 'ルーティングアドレス', 'リクエストタイプ')`
use think\facade\Route;
単一のアプリケーションを例に挙げます:
// 注册路由到News控制器的read操作 Route::rule('new/:id','News/read');
http://serverName/new/5
にアクセスすると、自動的に
http://serverName/news/read/id/5
にルーティングされ、元のアクセス アドレスが自動的に設定されます。無効になります。
ルール メソッドでリクエスト タイプを指定できます (指定しない場合は、デフォルトで任意のリクエスト タイプが有効になります)。例:
Route::rule('new/:id', 'News/update', 'POST');
リクエスト タイプのパラメータは大文字と小文字が区別されません。 。
は、定義されたルーティング ルールが POST リクエストでのみ有効であることを示します。 GET および POST リクエストでサポートされるルーティング ルールを定義する場合は、
Route::rule('new/:id','News/read','GET|POST');
を使用できます。ただし、通常は、次のようなリクエスト タイプに対応するショートカット メソッドを使用することをお勧めします。
ショートカットメソッド | ||
---|---|---|
get | POST | |
post | PUT | |
put | DELETE | |
delete | PATCH | |
patch | ||
任意 | ショートカット登録メソッドの使用法は次のとおりです: Route::shortcut メソッド名 ('ルーティング式', 'ルーティング アドレス') 使用例は次のとおりです: 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'); // 所有请求都支持的路由规则 複数のルーティング ルールを登録した後、システムはリクエスト タイプに一致する登録済みのルーティング ルールを順に探索し、正しいルーティング ルールが一致すると、最終的なスケジューリング メソッドが実行されます。 、後続のルールが実行されるため、これ以上のテストは必要ありません。 ルール式 ルール式には、通常、静的ルールと動的ルール、および 2 つのルールの組み合わせが含まれます。たとえば、次はすべてです。有効なルール式 式: 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'); // 全动态地址 正規表現の定義では、パラメータ区切り文字として / が使用されます (PATH_INFO 区切り文字の設定に関係なく、ルーティング ルール式を定義して URL を区切る場合は、必ず / を使用してください)ただし、変数を組み合わせて使用する場合を除きます)。 各パラメーターには動的変数を含めることができます。たとえば、変数または <変数> は両方とも動的変数を表し (新しいバージョンでは、混合変数定義に適した 2 番目の方法の使用を推奨しています)、自動的に操作メソッドの対応するパラメータにバインドされます。 URL アクセスの PATH_INFO 区切り文字は pathinfo_depr を使用して構成されていますが、どのように構成しても、ルーティング ルール式のルーティング区切り文字の定義には影響しません。 オプションの変数 ルーティング パラメータのオプションの定義をサポートします。例: Route::get('blog/:year/[:month]','Blog/archive'); // 或者 Route::get('blog/<year>/<month?>','Blog/archive'); 変数が [ ] で囲まれた後この変数は、ルート マッチングのオプションの変数です。 上記のルーティング ルールを定義すると、次の URL アクセス アドレスが正しいルートと一致するようになります: http://serverName/index.php/blog/2015 http://serverName/index.php/blog/2015/12 オプションの変数定義を使用した後は、前に 2 つ以上のルーティング ルールを定義する必要があります。処理された状況をルーティング ルールに組み合わせることができます。 オプションのパラメータはルーティング ルールの最後にのみ配置できます。オプションのパラメータが途中で使用された場合、後続の変数はオプションのパラメータになります。 完全一致 ルールの一致が検出された場合、デフォルトでは URL の先頭からのみ一致します。URL アドレスの先頭に限ります。定義されたルーティング ルールが含まれている場合、一致は成功します。URL を正確に一致させるには、ルーティング式の最後に $ 記号を使用できます。例: Route::get('new/:cate$', 'News/category'); この定義の後に、 http://serverName/index.php/new/info は正常に一致しますが、 http://serverName/index.php/new/info/2 は正常に一致しません。 Route::get('new/:cate', 'News/category'); の方法で定義すると、両方の URL アクセス方法を正常に照合できます。 URL をグローバルに完全に一致させる必要がある場合は、ルーティング構成ファイルで // 开启路由完全匹配 'route_complete_match' => true, 追加パラメータを設定できます。 ルーティング ジャンプ 追加の受信パラメーター ペアをサポートする場合があります (追加パラメーターとは、URL にないパラメーターを指します。必要な操作を暗黙的に渡すことで、セキュリティ保護において特定の役割を果たす場合があります。これについては後で説明します)。例: Route::get('blog/:id','blog/read') ->append(['status' => 1, 'app_id' =>5]); 上記のルーティング ルール定義では、status パラメーターと app_id パラメーターは URL に存在せず、暗黙的な値の転送です。もちろん、これらは必ずしも必要というわけではありませんが、必要な場合に使用できます。 。ルートごとに異なる追加パラメータを設定できます。 append メソッドの変数とルーティング ルールの間に矛盾がある場合は、append メソッドで渡された変数が優先されます。 ルート識別 ルートに基づいてURLアドレスを迅速に生成する必要がある場合は、ルートを定義するときに生成識別を指定できます。 (ただし、必ず確認してください)。 例 // 注册路由到News控制器的read操作 Route::rule('new/:id','News/read') ->name('new_read'); ルーティング アドレスを生成するときに使用できます url('new_read', ['id' => 10]); ルーティング識別子を定義しない場合、システムはルーティング アドレスを使用します。たとえば、次のメソッドを使用して、 url('News/read', ['id' => 10]); 強制ルーティング 'url_route_must' => true, ホームページのルーティング ルールを生成できます。ルーティング設定ファイルは、次のように採用/定義できます。 Web サイトのホームページのルーティング出力 Hello, world! Route::get('/', function () { return 'Hello,world!'; })
|