Laravel 5.5 路由新特性

在近几天即将发布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 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

实用新功能.赞

6年前 评论
GeekGhc

可以可以

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!