获取Laravel中路线的控制器和动作

时间:2019-08-30 12:27:06

标签: laravel laravel-5

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

我有一条路线:

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

我可以使用类似的方式获取控制器名称和动作吗?

resolve('/somepage');

获得与Route::current()->getActionName()

相同的结果
App\Http\Controllers\SomeController@someAction

3 个答案:

答案 0 :(得分:4)

这应该有效:

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();

答案 1 :(得分:0)

我通常使用 route('somePageRoute')方法,但要先命名路由

Route::get('/somePage','SomeController@someAction')->name('somePageRoute');

答案 2 :(得分:-1)

仅此即可获得控制器名称和操作

request()->route()->getAction()