Upload
shengyou-fan
View
5.903
Download
0
Embed Size (px)
Citation preview
Request 運行週期
Route
Controller
ModelView
index.php
Server
Request
Response
Client
app init
★ 參考說明:http://laravel-recipes.com/recipes/52/understanding-the-request-lifecycle
Laravel 的運作流程1.請求進入 public/index.php 裡2. bootstrap/start.php 創建應用程式和偵測運行環境3.框架內部 framework/start.php 配置設定和載入
service providers4.應用程式 app/start 載入5.應用程式 app/routes.php 載入6.請求傳入應用程式中進行處理7.Response 物件回傳至 client
★ 參考說明:http://laravel.tw/docs/4.2/lifecycle
什麼是 Route?• Route 就是 App 一條一條的門禁規則,規則內指定每一個路由可以接受的動作
(GET、POST、PATCH、DELETE) 及需要傳入的參數
• Route 規則會由上而下逐一比對。符合就會執行、若找不到就會回傳 404 (Not
Found)
為什麼要用 Route?• Document Root 指定在 public,透過框架進入點 (index.php) 統一管理所有路由,增加程式碼安全性
• 透過 Route 設計,所有 App 可使用的路由就一目了然。除錯時,可以透過統一的路徑逐一排除錯誤
怎麼設定 Route?• 接收 GET (讀取)
• 接收 POST (寫入)
• 接收 PATCH (更新)
• 接收 DELETE (刪除)
Route::get(‘{url}’, function() { // Closure });
Route::post(‘{url}’, function() { // Closure });
Route::patch(‘{url}’, function() { // Closure });
Route::delete(‘{url}’, function() { // Closure });
Route 接收參數• 接收必要參數
• 接收選擇性參數
Route::get(‘posts/{id}’, function($id){ return ‘Post: ‘.$id;});
Route::get(‘users/{name?}’, function($name = ‘John’){ return ‘My name is ‘.$name;});
限制參數格式• 使用 where 限制
• 使用 pattern 限制
Route::get(‘posts/{id}’, function($id){ return ‘Post: ‘.$id;})-‐>where(‘id’, ‘[0-‐9]+’);
Route::pattern('id', '[0-‐9]+');Route::get(‘posts/{id}’, function($id){ return ‘Post: ‘.$id;});
有哪些 routes?• Q: 當 App 愈寫愈大、Route 愈寫愈多時,尤其綜合使用很多 Route 特異功能時,如何知道目前的 App 有哪些 routes 呢?
• A: 可以請 artisan 協助將所有 routes 規則整理成表格
artisan routes• 列出 routes 表格
- 呼叫這個指令,artisan 會把 App 目前所有的 route 規則整理成表格
- --name={...} 依名字搜尋 route
- --path={...} 依路徑搜尋 route
• 範例:$ php artisan routes
進階 Route 設定• Laravel 還可搭配以下設定做出更多彈性的設計
- group
- prefix
- namespace
- sub-domain
★ 參考說明:http://laravel.tw/docs/4.2/routing
頁面分配
/categories/{id}
分類頁
/
首頁(總覽)
/about
靜態頁/random
隨機頁/login
登入頁/posts
文章頁
/posts/{id}
/posts/create
/posts/{id}/edit
/categories/create
/categories/{id}/edit
/categories