Laravel 学习路线【4】控制器
生活随笔
收集整理的這篇文章主要介紹了
Laravel 学习路线【4】控制器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
控制器簡介
控制器可以將相關的HTTP 請求封裝到一個勒種進行處理,控制器目錄在 app/Http/Controllers 目錄中
定義控制器
<?php namespace App\Http\Controllers;use App\User; use App\Http\Controlelrs\Controller;class UserController extends Controller {//為指定用戶顯示詳情public function show($id){return view('user.profile',['user' => User::findOrFail($id)]);} }我們可以這樣定義路由
Route::get('user/{id}','UserController@show');如果一個請求匹配到上面URI UserController 的 show 方法就會被執行。路由參數也會傳遞給當前方法
單動作控制器
如果你想定義一個只處理一個動作的控制器,可以在控制器中定義 __invoke 方法。
<?phpnamespace App\Http\Controllers;use App\User; use App\Http\Controllers\Controller;class ShowProfile extends Controller {public function __invoke($id){return view('user.profile',['users' => findOrFail($id)]);} }當你為這個單動作控制器注冊路由的時候,不需要指定方法:
Route::get('user/{id}','ShowProfile');控制器中間件
中間件可以像這樣分配給控制器路由
Route::get('profile','UserController@show')->middleware('auth');但是,將中間件放在控制器構造函數中更方便,在控制器的構造函數中使用 middleware 方法你可以很輕松的分配中間件給該控制器。
class UserController extends Controller {//實例化一個新的UserController 實例public function __construct(){$this->middleware('auth');$this->middleware('log')->only('index');$this->middleware('subscribed')->except('store');} }在控制器中還可以使用閉包注冊中間件,這為我們定義只在某個控制器中使用中間件提供了方便,無需定義完整的中間件類:
$this->middleware(function($request,$next){return $next($request);})注:你還可以將中間件分配給多個控制器動作,不過,這意味著你的控制器會變得越來越臃腫,這種情況下,需要考慮將控制器分割成多個更小的控制器。
總結
以上是生活随笔為你收集整理的Laravel 学习路线【4】控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用MVC连接数据库及MVC应用的一般命
- 下一篇: 视频营销:影响视频排名的五个重要因素