練習時數: 請您拿出你的倒數計時器計時一小時
目的:今天要來練習跟您達成共識。
雖然設計模式沒有對或錯,只能多看看,並且在適應的場合時做,今天想跟大家分享達成Controller的共識,controller 裡面的function,laravel 預設的有一些既有的方法定義。
新建Laravel 專案
laravel new petstore
進入 petstore
資料夾
cd petstore
建立:Animal Model,以下指令除了建立 Model 以外還會新建 Migration 、Controller 這就是今天的主角,都是第一個字的縮寫,那麼 r
呢?Resource
等等會看到。
php artisan make:model Animal -rmc
應該會看到如下圖輸出結果。
使用 編輯器 開啟這個資料夾 petstore
,打開 AnimalController
應該在 App\Controller
資料夾中
App\Controller\AnimalController.php
檔案裡面會看到以下內容,複製全部的程式碼。
<?php
namespace App\Http\Controllers;
use App\Models\Animal;
use Illuminate\Http\Request;
class AnimalController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Animal $animal
* @return \Illuminate\Http\Response
*/
public function show(Animal $animal)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Animal $animal
* @return \Illuminate\Http\Response
*/
public function edit(Animal $animal)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Animal $animal
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Animal $animal)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Animal $animal
* @return \Illuminate\Http\Response
*/
public function destroy(Animal $animal)
{
//
}
}
這些就是定義好的function 也就是剛剛 r
這個參數加進來的東西,這些就是要用來操作 Animal 這個資源。
我們先達成一個共識這是給網站使用的,不是拿來寫API專用的 Controller ,所以會以建立網站系統的原則來說明。
方法名稱 | 定義 | 備註 |
index | 列表那一頁顯示的畫面。 | |
create | 建立 Animal 操作的那個畫面。 | |
store | 使用者在建立Animal資源的儲存進入資料庫的動作。 | |
show | 顯示一單動物資源的畫面。 | |
edit | 更新單一動物資源的畫面。 | |
update | 更新但一動物資源進入資料庫的動作。 | |
destroy | 移除一個動物資源的動作。 |
請在每個方法中加入以下程式碼,以 index
為例。
public function index()
{
return '我是可以看動物列表的「畫面」';
}
以此類推,都加上return 並回傳文字,文字自己打一下,用自己懂的的方式打出來。
最後一個步驟,我們要設定路由,讓別人(使用者),可以依照網址連進這個 Controller
,打開以下檔案。
routes/web.php
在檔案中加入以下程式碼
Route::resource('animals', \App\Http\Controllers\AnimalController::class);
以上程式碼也等於在檔案中下入以下程式碼,則一選擇即可。
use App\Http\Controllers\AnimalController;
Route::resource('animals', AnimalController::class);
接著我們開啟暫時用的網頁伺服器輸入以下指令。
php artisan serve
應該會出現如下圖的輸出
打開瀏覽器,網址輸入 http://127.0.0.1:8000/
,畫面如下圖所示。
網址上輸入
http://127.0.0.1:8000/animals
會看到回傳的
我是可以看動物列表的「畫面」
這就是使用 GET 的方式請求 http://127.0.0.1:8000/animals ,可以看到動物資源的列表畫面。
恭喜您!有空再來看看,讓自己更厲害,也歡迎跟我分享。