ルーティングアクセスアドレス



コントローラー/オペレーションへのルーティング

これは、最も一般的に使用されるルーティング方法です。ルーティング ルールは、次の場所にルーティングされます。関連するコントローラとオペレーション、そしてシステムは関連するオペレーションの実行をスケジュールします。形式は次のとおりです:

コントローラ/オペレーション

解析ルールはオペレーションから解析されます。次に、コントローラを解析します。例:

// 路由到blog控制器
Route::get('blog/:id','Blog/read');

ブログ クラスは次のように定義されています:

<?php
namespace app\index\controller;

class Blog
{
    public function read($id)
    {
        return 'read:' . $id;
    }
}

ルーティング アドレスはマルチレベル コントローラをサポートしており、次のメソッドを使用して設定します:

Route::get('blog/:id','group.Blog/read');

は、次のコントローラー クラスへのルーティングを意味します。

index/controller/group/Blog

は、動的アプリケーション、コントローラー、または操作へのルーティングもサポートできます。例:

// action变量的值作为操作方法传入
Route::get(':action/blog/:id', 'Blog/:action');

クラス メソッドへのルーティング

このルーティング方法は、任意のクラスのメソッドの実行をサポートでき、コントローラー操作メソッドの実行に限定されません。

ルーティング アドレスの形式は、(動的メソッド):

\complete クラス名@メソッド名

または (静的メソッド)

\complete です。クラス名::メソッド名

たとえば、

Route::get('blog/:id','\app\index\service\Blog@read');

は、\app\index\service\Blog クラスの read メソッドを実行します。
また、次のような静的メソッドの実行もサポートしています。

Route::get('blog/:id','\app\index\service\Blog::read');

リダイレクト ルート

##リダイレクト メソッドを直接使用して、リダイレクト ルートを登録できます

Route::redirect('blog/:id', 'http://blog.thinkphp.cn/read/:id', 302);

テンプレートへのルーティング

テンプレート出力を直接レンダリングするためのルーティングをサポートします。

// 路由到模板文件
Route::view('hello/:name', 'index/hello');

は、このルートが現在のアプリケーションで view/index/hello.html テンプレート ファイルの出力をレンダリングすることを意味します。

現在のリクエストの param 変数は、テンプレート ファイルに直接出力できます。追加のテンプレート変数を追加する必要がある場合は、次を使用できます:

Route::view('hello/:name', 'index/hello', ['city'=>'shanghai']);

名前と都市の変数を出力できますテンプレート内にあります。

Hello,{$name}--{$city}!

応答オブジェクトへのルーティング

ルート内での応答オブジェクト出力の直接指定をサポートします。例:

Route::get('hello/:name', response()
        ->data('Hello,' . $name)
        ->code(200)
        ->contentType('text/plain'));

その他のケースリソース ファイル リクエストに対して直接 Set 404 アクセスを設定します。

// 对于不存在的static目录下的资源文件设置404访问
Route::get('static', response()->code(404));

クロージャへのルート

クロージャを使用して、特別なニーズを持ついくつかのルートを定義できます。コントローラの操作メソッドを実行する必要があります。例:

Route::get('hello', function () {
    return 'hello,world!';
});

パラメータの受け渡し

パラメータの受け渡しは、クロージャが定義されている場合にサポートされます。たとえば、次のとおりです。

Route::get('hello/:name', function ($name) {
    return 'Hello,' . $name;
});

ルール ルーティングで定義された動的変数の名前は、クロージャ関数のパラメータ名であり、順不同です。

したがって、アクセスする URL アドレスが

http://serverName/hello/thinkphp

である場合、ブラウザによる結果出力は次のようになります:

Hello, thinkphp

依存関係の注入

クロージャで依存関係の注入を使用できます。例:

Route::rule('hello/:name', function (Request $request, $name) {
    $method = $request->method();
    return '[' . $method . '] Hello,' . $name;
});