22
Laravel 工作坊 Route 機制 shengyou @ 彰師大資工系學會 (2014.12.13)

Route 機制

Embed Size (px)

Citation preview

Laravel 工作坊Route 機制

shengyou @ 彰師大資工系學會 (2014.12.13)

階段任務• 學習 Laravel Route 的設定方式

• 從實作需求裡定義所有需要的 Route

Route 簡介

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 設定用 artisan 指令列出目前的 Route 設定

進階 Route 設定• Laravel 還可搭配以下設定做出更多彈性的設計

- group

- prefix

- namespace

- sub-domain

★ 參考說明:http://laravel.tw/docs/4.2/routing

定義 Route

頁面分配

/categories/{id}

分類頁

/

首頁(總覽)

/about

靜態頁/random

隨機頁/login

登入頁/posts

文章頁

/posts/{id}

/posts/create

/posts/{id}/edit

/categories/create

/categories/{id}/edit

/categories

定義 Route在 app/routes.php 裡定義 App 的 Blog 的 Route 規則

Route 規則表格設定完 routes.php 後,執行 artisan routes 檢查結果

存檔點• 試著把現在已經可以運作的程式碼加入版本控制內

• 流程提醒:

- working directory > staging area > commit

階段檢查表• 確認在 routes.php 內有

- 12 個 GET 規則

- 1 個只能接受數字的 Route Pattern

問與答學員可開始練習、實作

單元小結• 在這個單元裡,我們說明如何設定 Route

規則,並設計/定義了 Blog 的 Route 及

Route Pattern

• 下一個單元,我們將學習 Laravel 的 View

及樣板引擎 Blade