首页 > 解决方案 > 在 Laravel 中获取路由的控制器和动作

问题描述

我想解析为路由配置的控制器名称和操作

我有一条路线:

Route::get('/somePage','SomeController@someAction');

我可以使用以下内容获取控制器名称和操作:

resolve('/somepage');

获得相同的结果,我可以从中得到Route::current()->getActionName()

App\Http\Controllers\SomeController@someAction

标签: laravellaravel-5

解决方案


这应该有效:

function getAction($uri, $method) {
        $route = collect(Route::getRoutes())
            ->filter(function($route) use($uri, $method){
            return $route->getUri() === $uri && 
                    in_array($method, $route->getMethods());
        })->first();
        return $route ? $route->getAction() : null;
}

用法:

$action = getAction('posts', 'GET');

或者:

$request = \Illuminate\Http\Request::create('posts', 'GET');
$action = Route::getRoutes()->match($request)->getAction();

推荐阅读