Laravel 在控制器外部获取路由参数

Posted

技术标签:

【中文标题】Laravel 在控制器外部获取路由参数【英文标题】:Laravel get Route parameters outside controller 【发布时间】:2016-10-21 00:00:45 【问题描述】:

我已经定义了一个这样的虚拟路由:

Route::get('sth/v1/v2' , [
    'uses'=>'SthController@sth',
]) ;

如何获取外部控制器 v1v2 的值?

【问题讨论】:

比如……在哪里?在路由文件中,在服务提供者中,在中间件中......? How to get current route name in laravel 5?的可能重复 【参考方案1】:

没试过,但认为它的Route::current(),从任何地方使用来访问参数

$currentParams = Route::current()->parameters();

【讨论】:

【参考方案2】:

您可以像这样在任何地方获取 v1v2 的值:

request()->v1;
request()->v2;

【讨论】:

【参考方案3】:

您可以在通过时将数据放入控制器中的会话中,然后从任何地方获取您想要的数据,

Session::put('v1');
Session::put('v2');

现在您可以访问任何地方,例如:

Session::get('v1')
Session::get('v2')

如果您需要删除会话数据,只需使用

Session::forget('v1')
Session::forget('v2')

【讨论】:

【参考方案4】:

使用此代码

$current_params = Route::current()->parameters();

dd($current_params->v1) ;

【讨论】:

【参考方案5】:

这可以是另一种方式: Route::getCurrentRoute()->getParameter('v1')

【讨论】:

【参考方案6】:

在 Laravel 5.6 中对我来说是:

Route::current()->parameters['v1']
Route::current()->parameters['v2']

等等……

【讨论】:

以上是关于Laravel 在控制器外部获取路由参数的主要内容,如果未能解决你的问题,请参考以下文章

laravel-4-laravel请求参数和路由参数,以及获取参数

如何在laravel路由中定义两个参数

Laravel 将 url 参数从控制器传递到路由

Laravel 使用来自控制器的参数重定向路由

Laravel 路由可选参数到控制器

Laravel 5.6 - 在控制器中按名称获取路由