Restful
- 進行增刪改查
Route::resource('photo', 'PhotoController'); - 如下
| 動作 | URI | 行為 | 路由名稱 |
|---|---|---|---|
| GET | /photos | index | photos.index |
| GET | /photos/create | create | photos.create |
| POST | /photos | store | photos.store |
| GET | /photos/{photo} | show | photos.show |
| GET | /photos/{photo}/edit | edit | photos.edit |
| PUT / PATCH | /photos/{photo} | update | photos.update |
| DELETE | /photos/{photo} | destory | photos.destory |
- 配置資源路由
-
將
Route::get('article', 'ArticleController@index'); -
->改成
Route::resource('articles', 'ArticleController'); -
article 單數變成複數。
-
修改之前的view
resources/views/admin/home.blade.php中的url('admin/article') -
->為
url('admin/articles') -
resources/views/admin/article/index.blade.php中的url('admin/article/create') -
->為
url('admin/articles/create') ; -
修改
url('admin/article/'.$article->id.'/edit') -
->為
url('admin/articles/'.$article->id.'/edit') ; -
修改
url('admin/article/'.$article->id) -
->為
url('admin/articles/'.$article->id)
- 新增article
- 需要兩個動作,1. 新增article的頁面,2. 將資料送到後端
- 新增Article 頁面
- 使用
/admin/articles/create建立新增article頁面,瀏覽器使用GET從server獲取,對應ArticleController的create()方法
1
2
3
4public function create()
{
return view('admin/article/create');
}- 新增view於
resources/views/admin/article/create.blade.php
- 使用
1 | @extends('layouts.app') |
view()方法是 Laravel 中一个全局的方法,用於調用view文件,接受一個字符串參數,並按照此參數去調取對應的路由。admin/article/create'跟'admin.article.create'是等於的- 提交資料到後端
- blade中表單,有csrf_field是laravel內建的應對csrf攻擊的防範措施,任何 POST PUT PATCH 請求都會被檢測是否提交了 CSRF 字段。對應的代碼為
app/Http/Kernel.php裡的$middlewareGroups屬性裡的\App\Http\Middleware\VerifyCsrfToken::class值。 {!! csrf_field() !!}實際上會生成一个隱藏的 input:<input type="hidden" name="_token" value="GYZ8OHDAbZICMcEvcTiS82qlZs2XrELklpEl159S">- 如果你的系统有很多的 Ajax,而你又不想降低安全性,這裏的
csrf_token()函數會给你很大的幫助。 - 提交表單對應的是
store()方法 - create store()方法
- blade中表單,有csrf_field是laravel內建的應對csrf攻擊的防範措施,任何 POST PUT PATCH 請求都會被檢測是否提交了 CSRF 字段。對應的代碼為
1 | public function store(Request $request) // Laravel 的依賴注入系统會自動初始化我們需要的 Request 類 |
- 編輯Article
- 需要兩個動作: 1. 顯示編輯頁面 2. 將編輯資料送至資料庫更新
- 新增編輯頁面
- 使用
/admin/article/edit建立編輯頁面,瀏覽器使用GET獲取,對應ArticleController 中的edit()方法
- 使用
1 | public function edit($id ,Request $request) |
- 新增view於
resources/views/admin/article/edit.blade.php
1 | @extends('layouts.app') |
-
記得此處post!
-
提交表單到資料庫使用的是
update()方法
1 | public function update($id, Request $request) // Laravel 的依賴注入系统會自動初始化我們需要的 Request |
- 刪除Article
- 刪除文章所對應的方法是
destory()
1 | public function destroy($id) |
- 新增view於resources/views/admin/article/delete.blade.php
1 | <form action="{{ url('admin/articles/'.$article->id) }}" method="POST" style="display: inline;"> |