ホームページ >PHPフレームワーク >Laravel >Laravel5.2でのHTTPルーティング、コントローラーの作成、リソースルーティングの紹介(コード付き)

Laravel5.2でのHTTPルーティング、コントローラーの作成、リソースルーティングの紹介(コード付き)

不言
不言転載
2019-01-19 09:47:403497ブラウズ

この記事では、Laravel 5.2 での HTTP ルーティング、コントローラーの作成、およびリソース ルーティングについて説明します (コード付き)。必要な方は参考にしていただければ幸いです。

1. HTTP ルーティング

すべてのルートは、App\Providers\RouteServiceProvider クラスによってロードされる app/Http/routes.php ファイルで定義されます。

1. 基本的なルーティング

単純な Laravel ルーティングは URI とクロージャーのみを受け入れます

Route::get('foo', function () {
    return 'Hello, Laravel!';
});

一般的な HTTP リクエストの場合, 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); //响应所有请求

このうち、$callback はクロージャまたはコントローラメソッドになります。実際、開発ではコントローラー メソッドが使用される場面が数多くあります。

2. ルーティングパラメータ

//单个路由参数
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]+']);

2. コントローラーの作成

Artisan コマンドを使用して php 職人 make:controller UserController を作成します。これで、コントローラー ファイル UserController.php がコントローラー ディレクトリ app/Http/Controllers に生成されます。

3. 高度なルーティング

1. 名前付きルーティング グループ

2.1 ルーティング プレフィックスの合計名前空間

たとえば、コントローラー メソッドを指すルートが 2 つあります。

//命名闭包路由
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'));
最初のルートを取ります。

パラメータ 1:

admin /login を意味します。この URI が Web サイトのルート ディレクトリにある admin/login リソースを要求していることを示します。完全なアドレスは

http://ドメイン名/admin/login (ここでは Apache のルート書き換えが有効になっており、「index.php」が非表示になっています)。 ) の場合、このリクエストは 2 番目のパラメーターで指定されたコントローラー メソッドにマップされます。 Web サイトのルート ディレクトリはエントリ ファイルが配置されているディレクトリであり、Laravel のパブリック ディレクトリであることに注意してください。サーバーを設定するときにここを指定するのが最善です。

パラメータ 2: Admin\IndexController@login は、このコントローラ メソッドが App\Http\Controllers 名前空間にあり、接続が App\Http\Controllers\ であることを意味します。 Admin\IndexController コントローラーのメソッド。

明らかに、2 つのルートの URI とコントローラー メソッドには同じ部分があります。その後、ルート グループ化を有効にすると、共通部分を抽出できます:

Route::get('admin/login', 'Admin\IndexController@login');
Route::get('admin/index', 'Admin\IndexController@index');

2.2 リソースルーティング

##リソースルーティングは、リソースコントローラーにマッピングされたルートであり、リソースを追加、削除、変更、確認するための 7 つのメソッドと 7 つのルートが組み込まれています。

最初に、リソース コントローラー ArticleController を作成します。

// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
    Route::get('login', 'IndexController@login');
    Route::get('index', 'IndexController@index');
});

これにより、app/Http/Controllers/Admin/ArticleController.php ファイル (管理フォルダー) にリソース コントローラーが生成されます。存在しない場合は自動的に作成されます)。7 つの組み込みメソッドは次のとおりです。

php artisan make:controller Admin/ArticleController  --resource

次に、リソース ルーティングを定義します。ここでは、引き続きルーティング グループの下に定義することを選択します。

<?php
 
namespace App\Http\Controllers\Admin;
 
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class LinksController extends Controller
{
    /**
     * 显示一个资源的列表
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }
 
    /**
     * 显示一个表单来创建一个新的资源
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
 
    /**
     * 保存最新创建的资源
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
 
    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
 
    /**
     * 显示一个表单来编辑指定的资源
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
 
    /**
     * 更新指定的资源
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
 
    /**
     * 删除指定的资源
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

最後に、ルートを確認します。リソース コントローラーとリソース ルーティングを使用すると、上記の 7 つのメソッドの HTTP リクエスト メソッドを確認できます。

Artisan コマンド

php 職人ルート:リストを使用して、リクエスト メソッド、URI、コントローラー メソッド、ミドルウェアを含む現在のルートをすべてリストします。

以上がLaravel5.2でのHTTPルーティング、コントローラーの作成、リソースルーティングの紹介(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。