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;"> |