Laravel 5.1 路由名称资源 null - Route::currentRouteName()

Laravel 5.1 route name resource null - Route::currentRouteName()

我注意到有几个类似的主题,但是 none 的解决方案解决了我的问题。

设置我的路线如下:

Route::resource('clientes', 'Clients\ClientsController',
    [
        'names' => [
                        'create'    => 'clients.create',
                        'store'     => 'clients.store',
                        'edit'      => 'clients.edit',
                        'update'    => 'clients.update'
                    ]
    ]
);

我必须在中间件中捕获路由名称

public function handle($request, Closure $next){
    var_dump(Route::currentRouteName());exit;
}

创建和编辑打印的方法:

string(14) "clients.create"

string(12) "clients.edit"

但是,方法存储和更新打印 NULL。

我们尝试的其他方法是:

$request->route()->getName();

app()->router->getCurrentRoute()->getName();

提前致谢。

试试这个:

Route::getCurrentRoute()->getPath();

或者如果您需要操作名称

Route::getCurrentRoute()->getActionName();

//OR 

$request->route()->getActionName();

来源:Illuminate/Routing/Router.

看看How to get Route in Middleware in Laravel.

希望对您有所帮助。

相对于 Route::currentRouteName() 我做了

// Prefix name, i.e. Interfaces
$getPrefix = preg_replace ("/\W|\./", '', $request-> route ()-> getPrefix ());
// Full route name if controller resource, unless it'd be only controller name
$getName = $request-> route ()-> getName ();
// Resource action name, or another
$getActionName = $request-> route ()-> getActionName ();
// Full route name
echo $route = $getActionName === "Closure" ? "{$getPrefix}.{$getName}.index" : $getName;

因此我不需要像魅力一样为 Router, so I may use the Request's route 创建任何命名空间。