Featured image of post Day 22. CRUD 很簡單 Resource Controller

Day 22. CRUD 很簡單 Resource Controller

資源

Laravel7 30天: 目錄
專案連結: github - laravel7 之 30 天分享

前言

專案連結: github - laravel7 之 30 天分享

上一篇: Day 21. 資料整理好幫手 - Collection

接下來會實作 ToDo 的功能, 實作前我們先介紹一下 Resource Controllers

主要

文件

之前我們於Day 5. 路由: Router 有介紹過我推薦的 route crud的使用,直接附上上次範例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Route::group(['prefix' => 'users', 'as' => 'users.'], function () {
    
    // 列表
    Route::get('/', 'UserController@index')->name('index');
    
    // 新增
    Route::get('/create', 'UserController@create')->name('create');
    Route::post('/', 'UserController@store')->name('store');
    
    // 編輯
    Route::get('/{user}/edit', 'UserController@edit')->name('edit');
    Route::patch('/{user}', 'UserController@update')->name('update');
    
    // 刪除
    Route::delete('/{user}', 'UserController@destroy')->name('destroy');
});

可以看到 『列表』、『新增』、『更新』、『刪除』的路由設定, 為何我要這樣設定呢?

因為 Laravel 對於這件事有做好的功能, 上面的內容可以簡化成

1
Route::resource('users', 'UserController');

而我們要如何便利的去對應這些路由呢?
你只要下

1
php artisan make:controller UserController -r

(圖片是因應下一篇文章需要)

Laravel 就會幫你產生好剛剛的路由所有對應到的 controller 的 functions
相當方便。

產生的檔案會像下面這樣

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 列表
     */
    public function index()
    {
        //
    }

    /**
     * 新增的頁面
     */
    public function create()
    {
        //
    }

    /**
     * 新增
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * 顯示
     */
    public function show($id)
    {
        //
    }

    /**
     * 更新的頁面
     */
    public function edit($id)
    {
        //
    }

    /**
     * 更新
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 刪除
     */
    public function destroy($id)
    {
        //
    }
}
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy