Laravel resource 控制器 说白了就是创建一个具有Restful接口形式的控制器。

restful控制器的路由写法

Route::resource('index','App\Http\Controllers\IndexController');
使用这种写法我们不需要指定控制器的方法名称,如get还是post,控制器也不需要写方法名,因为它已经提供了create()、store()、destroy() 等方法。

restful控制器的创建方法

php  artisan make:controller IndexController --resource 
上面的命令会在 app/Http/Controllers/ 目录下创建 IndexController。 IndexController 类包含每个resource操作的方法。
创建控制器的代码如下:
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class IndexController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

注册多个restful控制器

我们可以在web.php路由中注册多个restful控制器。

1. 首先创建两个restful控制器

Php artisan make:controller IndexController  
Php artisan make:controller PostController
Laravel resource控制器(Restful 接口形式)

2.在web.php中添加这两个路由

Route::resources(  
     ['indexs'=>'IndexController',  
      'posts'=>'PostController']  
); 

3.查看路由

php artisan route:list 
Laravel resource控制器(Restful 接口形式)

注册部分restful控制器方法

有时候,我们可能只想注册某些特殊的方法,laravel也是可以实现的,如下所示:

Route::resource('index','IndexController',['only' => ['create','show']]); 

显而易见,上面的注册的控制器只有create()和show()方法。

使用 php artisan route:list 命令再次验证,如图所示:

Laravel resource控制器(Restful 接口形式)

restful控制器路由别名

下面注册路由别名的例子:

Route::resource('post', 'PostController',['names' => ['create' =>'post.build']]); 
在命令行中输入‘php artisan route:list ’ 结果如图所示:

Laravel resource控制器(Restful 接口形式)

上图显示 create() 方法的路由名称已重命名为 post.build,其默认名称为 post.create