# 構築一個簡單、帶後台管理的 blog 系統(文章新增、瀏覽、編輯、刪除)
本系列筆記跟隨 johnlui/Learn-Laravel-5 (opens new window) 的教學脈絡;
2016 版 Laravel 系列入门教程(四) (opens new window)
路由規劃:訪問 'www.myhost/' 即可瀏覽網站首頁
理解 laravel 的 views,其中 layouts 與 views 的關係可以為父子或無關係。
php artisan make:controller Admin/HomeController
生成後端的控制器文件路由增加 3. 對應的 url
// 在 routes 用 group 的觀念真的太神啦 Route::group(['middleware' => 'auth', 'namespace' => 'Admin', 'prefix' => 'admin'], function(){ Route::get('/', 'HomeController@index'); });
在 3. 生成的控制器中編寫相對應的 index 方法與要呼叫的 view
新增 view/admin/home.blade.php
修改 Auth 系統登入後的跳轉目標。打開 pathToLaravelApp/app/Http/Controllers/Auth/LoginController.php
protected $redirectTo = '/admin';
訪問 'www.myhost/admin' 並登入測試
php artisan make:controller Admin/ArticleController
於 ArticleController 新增 index 方法
public function index() { return view('admin/article/index')->withArticles(Article::all()); }
新增 article 管理用的 view component: admin/article/index.blade.php
於 Admin/ArticleContorller 中 use App\Article 命名空間
透過 restful controller 接受文章的 CRUD 請求 將路由中 get 改成 resource 即可,如
Route::resource('article', 'ArticleController');
在 Admine/ArticleContoller 中增加對應 Request 請求的各種方法
建立 14. 各種方法對應的 Views
偏頭痛穩定發作中,13 ~ 16 點看教學腦海整理吧
Note: 在 Controller 中的 view('pathToView')->withArticles(Artilcle::all()),
等價於 view('pathToView')->with('Articles', Article::all()); 此舉會將查詢到的資料以 $articles 提供 給 view。
# Laravel 的 Views: blade 模板系統 / layouts / views
PathToLaravelApp\RESOURCES
└─views
│ home.blade.php
│ welcome.blade.php
│
├─auth
│ │ login.blade.php
│ │ register.blade.php
│ │
│ └─passwords
│ email.blade.php
│ reset.blade.php
│
└─layouts
app.blade.php
blade 模板系統中,
# views/home.blade.php 中
1. @extends('layouts.app') # 表示此 view 隸屬於 layouts/app.blade.php
2. @section('content') ... @endsection # section 之間的內容會在該隸屬 layouts 下輸出
# layouts/app.blade.php
3. @yield('content') # 輸出 2. 中要輸出的內容
# Laravel 提供了 Restful Resources Controller
Verb | URI | Action | Route Name |
---|---|---|---|
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} | destroy | photos.destroy |