引言
Laravel程序上下文内,我们需要动态地获取当前的路由地址,应该怎么写呢? 本文就通过从 Laravel 4 到 5 及以上版本的实现方法,带大家重温这一知识点。
学习时间
在 Laravel 4 中你可以使用系统提供的 Route 对象,直接访问其方法实现:
Route
虽然laravel做了很多努力向下兼容,但是随着PHP的版本升级, 以及框架的改良,实现同一功能的方法也越来越灵活。
首先我们仍然可以通过 Route 对象的方法访问,代码写起来像下面这样:
Route
因为Route对象属于请求阶段,而框架将其关联到了 Request 对象上,所以也可以下面这样链式调用:
Request
在 Laravel 5.1 内这样写:
use
Laravel 5.2 使用门面实现:
use
当然了,既然能获取到路由地址,获取方法名自然也不在话下。 代码如下:
Route
如果要获取整个路由包括协议,域名,路由,请求参数,锚点这些信息,可以返回 path,
// https://example/foo/bar
如果仅仅是 uri 的字符串,则使用
$url
如果要筛选特定字符串匹配的路由地址,可以使用 is 方法进行匹配验证:
if
星号是通配符,返回所有匹配项。
Laravel 5.3 以后的框架,获取方法统一下来了,比如下面这样:
$route
写在最后
本文通过多个版本,多个方法的比对,演示了在程序内获取当前请求的路由地址,资源地址,方法名等等的方式, 在路由分配,权限控制中可以灵活使用。 Happy coding :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。