使用 Controller
當 Route 收到某個網址時,它會找到對應的 Controller,把任務交給它去處理。Controller 可以決定要取得什麼資料,並回傳什麼 View。
1.建立 HomeController
首先,在 app/controllers 目錄下新增一個 HomeController.php。在這個目錄下會有一個 Controller 的基礎類別 BaseController.php ,我們建立的 HomeController.php 必須繼承這個類別,程式碼如下:
在這個類別中,我們建立了一個 index() 方法,並把原本在 route 中的內容移動到這裡。現在由 HomeController 來回傳 view。
2.修改 route。
原本的 route 變成只有一行了,非常簡潔。第二個參數從原本的匿名函式換成 Controller 的名稱 @ 方法名稱。
現在的整個流程是:
這只是 Controller 的基本功能,較複雜功能後面再說明。現在重新整理網頁,會看到一樣的內容,但是現在的運作流程已經改變了。
查詢參數
Laravel 有用到 rewrite_module,所以網址不會出現 index.php 這種帶副檔名的結尾。當在網址中帶參數時,原本的
這種格式,會被轉換成
既簡短又好看。在 Route 中就可以這樣設定。
例如,我們會以 id 去查詢資料庫中的資料然後顯示。因為我們還沒有說明資料庫的部份,所以這裡的介紹會以假資料來代替。
1.首先在原本的 Route 下新增一行新的 Route
'post/{id}' 中的 post 是網址的一部份,後面的 {id} 表示為參數。動作的部份指定為新的方法 @show。
2.在 HomeController 中新增相對應的方法 show()
因為 show() 方法要處理的 URI 有輸入參數,所以必須加入參數名稱 $id。這裡我們簡單的把它串接在 hello 字串後面。
現在在網址中輸入
就會顯示
記得最後面不能有斜線。後面接的 123 就是變數 $id 的值,輸入任何值,controller 就會收到這個值,在實際案例中,這時候就可以去資料庫中查詢資料,最後在附加在 View 中回傳。
Last updated
Was this helpful?