前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟短文 | Laravel 灵活地获取当前请求的路由地址

3分钟短文 | Laravel 灵活地获取当前请求的路由地址

作者头像
程序员小助手
发布2020-08-13 14:52:51
1.3K0
发布2020-08-13 14:52:51
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

Laravel程序上下文内,我们需要动态地获取当前的路由地址,应该怎么写呢?本文就通过从 Laravel 4 到 5 及以上版本的实现方法,带大家重温这一知识点。

学习时间

在 Laravel 4 中你可以使用系统提供的 Route 对象,直接访问其方法实现:

代码语言:javascript
复制
Route::currentRouteName();

虽然laravel做了很多努力向下兼容,但是随着PHP的版本升级, 以及框架的改良,实现同一功能的方法也越来越灵活。

首先我们仍然可以通过 Route 对象的方法访问,代码写起来像下面这样:

代码语言:javascript
复制
Route::getCurrentRoute()->getPath();

因为Route对象属于请求阶段,而框架将其关联到了 Request 对象上,所以也可以下面这样链式调用:

代码语言:javascript
复制
Request::route()->getName();

在 Laravel 5.1 内这样写:

代码语言:javascript
复制
use Illuminate\Support\Facades\Route;$currentPath= Route::getFacadeRoot()->current()->uri();

Laravel 5.2 使用门面实现:

代码语言:javascript
复制
use Illuminate\Support\Facades\Route;
Route::currentRouteName(); 

当然了,既然能获取到路由地址,获取方法名自然也不在话下。代码如下:

代码语言:javascript
复制
Route::getCurrentRoute()->getActionName();

如果要获取整个路由包括协议,域名,路由,请求参数,锚点这些信息,可以返回 path,

代码语言:javascript
复制
// https://example/foo/bar$uri = $request->path();

如果仅仅是 uri 的字符串,则使用

代码语言:javascript
复制
$url = $request->url();

如果要筛选特定字符串匹配的路由地址,可以使用 is 方法进行匹配验证:

代码语言:javascript
复制
if ($request->is('admin/*')) {  }

星号是通配符,返回所有匹配项。

Laravel 5.3 以后的框架,获取方法统一下来了,比如下面这样:

代码语言:javascript
复制
$route = Route::current();$name = Route::currentRouteName();$action = Route::currentRouteAction();

写在最后

本文通过多个版本,多个方法的比对,演示了在程序内获取当前请求的路由地址,资源地址,方法名等等的方式, 在路由分配,权限控制中可以灵活使用。Happy coding :-)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档