本系列文的環境狀態,可點擊此連結後花園環境參考
可以告訴我你想要些什麼嗎?
到底要如何控制,才能滿足你的需求...才能照我說的做...
Laravel Controller 是定義開發邏輯的一個類別,開發者可以透過繼承 Controller 定義不同邏輯的開發,這邊僅就在下用過的跟大家介紹跟分享。
所在位置:app/Http/Controllers
新增的Controller可在這邊找到
Terminal下指令,創建個乾淨的Controller,名爲Rose
$ php artisan make:controller RoseController
設置方法
到路徑BackGarden/app/Http/Controllers/RoseController.php
新增方法,名爲CallMe
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RoseController extends Controller
{
public function CallMe(){
echo 'Hello BackGarden';
}
}
Route對應設定
Route::get('CallMe', 'RoseController@CallMe');
如果有需要用CRUD的情況,可以使用 'Resource' 這個指令,可協助快速建置 CRUD 會需要用到的 action 。
$ php artisan make:controller DaisyController --resource
創建完後,查看路徑BackGarden/app/Http/Controllers/DaisyController.php
內容大概會像下圖這樣
可發現已內建了幾個action method,此時就可直接挑選需要的,再補入要設定的程式邏輯即可。
Route的對應設定
// 使用 resource method 以後,Laravel 會自動對應到相對的 action
Route::resource('daisy', 'DaisyController');
// 透過 resources method ,可以一次對應多個 Resource Controller
// 例如又用了resource新建了LilyController、OrchidController
// 如果不想向上面那樣一行行列出,可使用下列方式:
Route::resources([
'lily' => 'LilyController',
'orchid' => 'OrchidController'
]);
Partial Resource Routes
如果在使用 Resource Controller 時,不想使用全部的action method,但又想使用裡面一部份的action method,可以考慮使用Partial Routes,設部份站點連結
// 只對應到 create、show
Route::resource('daisy', 'DaisyController')
->only([
'create', 'show'
]);
// 反向設定,只對應到 create、show
Route::resource('daisy', 'DaisyController')
->except([
'index', 'store', 'update', 'destroy'
]);
Resource Controller 使用的 action 及 route 的對應表
Verb | URI | Action | Route Name |
---|---|---|---|
GET | /daisy | index | daisy.index |
GET | /daisy/create | create | daisy.create |
POST | /daisy | store | daisy.store |
GET | /daisy/{id} | show | daisy.show |
GET | /daisy/{id}/edit | edit | daisy.edit |
PUT/PATCH | /daisy/{id} | update | daisy.update |
DELETE | /daisy/{id} | destroy | daisy.destroy |
若想學習更進階的用法,可參考以下連結:
❁ 佛祖球球-Laravel Controller
❁ Laravel 學習筆記(11) - Route 進階
❁ SOJ-Day 24 - Laravel Controller 篇