すべてのルートは、AppProvidersRouteServiceProvider クラスによってロードされる app/Http/routes.php ファイルで定義されます。
単純な Laravel ルーティングは URI とクロージャーのみを受け入れます
Route::get('foo', function () { return 'Hello, Laravel!'; });
Route::get($uri, $callback); //响应 get 请求 Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback); Route::match(['get', 'post'], $uri, $callback); //响应 get, post 请求 Route::any('foo', $callback); //响应所有请求
//单个路由参数 Route::get('user/{id}', function ($id) { return 'User '.$id; }); //多个路由参数 Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // }); //单个路由参数(可选) Route::get('user/{id?}', function ($id = 1) { return 'User '.$id; }); //多个路由参数(可选) Route::get('posts/{post}/comments/{comment?}', function ($postId, $commentId = 1) { // }); //注意:多个参数时,只可以对最后一个参数设置可选,其他位置设置可选会解析错误 // 正则约束单个参数 Route::get('user/{name?}', function ($name = 'Jone') { return $name; })->where('name', '\w+'); //约束参数为单词字符(数字、字母、下划线) // 正则约束多个参数 Route::get('user/{id}/{name}', function ($id, $name) { // })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
php 職人 make:controller コントローラー ディレクトリ app/Http/ に生成されます。コントローラー
UserController.phpのコントローラーファイル。 3. 高度なルーティング
リー
最初のものを例に挙げます。
パラメータ 1:
admin/login
の下にある admin/login リソースを要求していることを意味します。完全なアドレスは
http://ドメイン名/ です。 admin/login(Apache のルート書き換えがここで有効になり、「index.php」が非表示になります)、このリクエストは 2 番目のパラメーターで指定されたコントローラー メソッドにマッピングされます。 Web サイトのルート ディレクトリはエントリ ファイルが配置されているディレクトリであり、Laravel のパブリック ディレクトリであることに注意してください。サーバーを設定するときにここを指定するのが最善です。
パラメータ 2: AdminIndexController@login は、このコントローラー メソッドが AppHttpControllers 名前空間の下にあり、接続が AppHttpControllersAdminIndexController コントローラーのログイン メソッドであることを意味します。
明らかに、2 つのルートの URI とコントローラー メソッドには同じ部分があります。次に、ルート グループ化を有効にすると、共通部分を抽出できます。 Route は、リソース コントローラーにマップされたルートです。Laravel リソース コントローラーには、リソースと 7 つのルートを追加、削除、変更、確認するための 7 つの組み込みメソッドがあります。 まず、リソースコントローラーArticleController
//命名闭包路由 Route:get('user', array('as' => 'alial', function(){}); //或 name 方法链 Route:get('user', function(){})->name('alias'); //命名控制器方法路由 Route:get('user', array('uses' => 'Admin\IndexController@index', 'as' => 'alias')); //或 name 方法链 Route:get('user', 'Admin\IndexController@index')->name('alias'));
このようにして、 app/Http/Controllers/
ファイルにリソース コントローラーが生成されます。 7 つの組み込みメソッドは次のとおりです:
Route::get('admin/login', 'Admin\IndexController@login');
Route::get('admin/index', 'Admin\IndexController@index');
を定義します。リソースルーティング
。ここでは、ルーティング グループの下で定義することを選択します。1 つだけ定義します
// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分 Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){ Route::get('login', 'IndexController@login'); Route::get('index', 'IndexController@index'); });
php 職人ルート:リスト を使用して、リクエスト メソッド、URI、コントローラー メソッド、ミドルウェアを含む現在のルートをすべてリストします。
以上がLaravel5.2でのHTTPルーティング例とコントローラとリソースルーティングの作成例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。