????為了替代在路由文件中以閉包形式定義的所有的請(qǐng)求處理邏輯,如果想要使用控制類來(lái)組織這些行為,控制器能將相關(guān)的請(qǐng)求處理邏輯組成一個(gè)單獨(dú)的類,控制器被存放在 app/http/Controllers 目錄中。
一、簡(jiǎn)單的創(chuàng)建一個(gè)控制器
//使用php?artisan?命令,創(chuàng)建好后會(huì)自動(dòng)加載命名空間,自動(dòng)基礎(chǔ)控制器基類 php?artisan?make:controller?[控制器路徑/]控制器名稱
二、控制器的分類
????1.基礎(chǔ)控制器
//app/http/controller/定義UserController namespace?AppHttpControllers; use?AppHttpControllersController; use?AppModelsUser; class?UserController?extends?Controller { ????/** ?????*?顯示指定用戶的簡(jiǎn)介 ?????* ?????*?@param??int??$id ?????*?@return?IlluminateViewView ?????*/ ????public?function?show($id) ????{ ????????....... ????} }
在路由中使用:
Route::get('user/{id}',?[UserController::class,?'show']);
????2.單行為控制器
//使用命令行方式創(chuàng)建單行為控制器 php?artisan?make:controller GetName?--invokable
namespace?AppHttpControllers; use?AppHttpControllersController; use?AppModelsUser; class?GetName?extends?Controller { ????/** ?????*?顯示指定用戶的簡(jiǎn)介 ?????* ?????*?@param??int??$id ?????*?@return?IlluminateViewView ?????*/ ????public?function?__invoke($id) ????{ ????????......... ????} }
在路由中使用:
Route::get('user/{id}',?GetName::class)
????3.資源控制器
//使用命令行方式創(chuàng)建資源控制器 php?artisan?make:controller?UserController?--reosurce
<?php namespace AppHttpControllersAdmin; use AppHttpControllersController; use AppModelsCategory; use AppModelsGood; use AppTransformersGoodTransformer; use IlluminateHttpRequest; class GoodController extends Controller { /** * Display a listing of the resource. * * @return IlluminateHttpResponse */ public function index(Request $request) { } /** * Store a newly created resource in storage. * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function store(Request $request) { } /** * Display the specified resource. * * @param int $id * @return IlluminateHttpResponse */ public function show($id) { } /** * Update the specified resource in storage. * * @param IlluminateHttpRequest $request * @param int $id * @return IlluminateHttpResponse */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return IlluminateHttpResponse */ public function destroy($id) { // } }
在路由中使用:
//第二參數(shù)為選填,例如當(dāng)不需要destory()方法時(shí),即可填入 Route::resource('goods',AppHttpControllersAdminGoodController::class,[ ??????'except'?=>?'destroy' ]); Route::resource('goods',AppHttpControllersAdminGoodController::class,[ ??????'only'??=>?['index','show','store','update'] ]);
? ? 相關(guān)視頻教程推薦:Laravel?視頻教程
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END