Laravel 5.5 路由新特性

young發表於2017-07-28

在近幾天即將釋出Laravel 5.5中,路由新增了兩個特別實用的特性viewredirect

Route::view

想必有些時候你的網站有非常簡單的路由只返回一個檢視,這個時候你可能會寫一個controller函式來返回檢視或者用閉包直接返回檢視,如Route::get('/home', function(){ return view('home'); });。可是問題來了,再寫一個控制器函式很麻煩,而且你需要跳轉過去才能知道這條路由是返回哪一個檢視。可是如果用閉包的話你就不能快取路由,這對網站效能影響很大。所以為了解決這個問題,Laravel 5.5新增了Route::view方法,為某個路由直接返回檢視,且能夠被快取。

用法

Route::view('/home', 'home', [
'foo' => 'bar',
]) 

第一個引數是路由,第二個是需返回的檢視,第三個是傳遞給檢視的引數。

Route::redirect

想必你也能猜到這個方法的作用,就是做網址的跳轉。你不必在自己寫redirect()邏輯。

用法

Route::redirect('home', 'dashboard', 301)

第一個引數是路由,第二個引數是你想跳轉的網址,第三個引數是返回的 HTTP 狀態碼,某些時候你可能會想用301來標記此路由已經永久改變網址。

原理

其實這兩個方法底層都是在框架裡面預先寫好了ViewControllerRedirectController,來處理返回檢視和跳轉。這樣就能使路由被快取。具體實現可以檢視對應 controller 檔案

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章