如何解析路径名到函数?

时间:2018-06-02 04:07:54

标签: php laravel

考虑到这样的路线:

Route::post('api/survey.json', ['as' => 'companies.getSurvey', 'uses' => 'CompaniesController@getSurvey']);

我有字符串" companies.getSurvey"我怎样才能找到指向哪种方法?也就是说,我要回到" CompaniesController @ getSurvey"或者我可以使用app()->call(...)调用某种Closure。

使用Laravel 5.2

2 个答案:

答案 0 :(得分:2)

(取决于您的laravel版本)您可以执行以下操作:

$route = app(\Illuminate\Routing\Router::class)->getRoutes()->getByName('companies.getSurvey');

if ($route) {
    app()->call($route->getAction()['uses']);
}

答案 1 :(得分:0)

你不能。

路由名称绑定到URL,而不是正在执行的方法。意思是,相同的路径名可以用于POSTGET(和其他方法),这通常会导致不同的控制器方法(甚至控制器)。

修改

澄清:单个方法名称可以指向多个方法。以下是php artisan route:list

的示例
  

| | GET | HEAD |测试|测试| App \ Http \ Controllers \ TestController @ getTest |网络|

     

| | POST |测试|测试| App \ Http \ Controllers \ TestController @ postTest |网络|

^两者都被命名为test并指向不同的方法。