iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 15
1

本系列文的環境狀態,可點擊此連結後花園環境參考

可以告訴我你想要些什麼嗎?
到底要如何控制,才能滿足你的需求...才能照我說的做...

Laravel Controller 是定義開發邏輯的一個類別,開發者可以透過繼承 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方法應用)

如果有需要用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 篇


上一篇
✾後花園D14✾-可以REST嗎?(來認識RESTful API吧!)
下一篇
✾後花園D16✾-資料庫跟我締結契約吧!(Laravel資料庫及env設定)
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49

尚未有邦友留言

立即登入留言