Как определить имя маршрута для функции? - PullRequest
0 голосов
/ 02 июня 2018

Учитывая, что есть такой маршрут:

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

И у меня есть строка "companies.getSurvey", как я могу найти метод, на который указывает?то есть я хочу вернуть либо "CompaniesController @ getSurvey", либо какое-нибудь закрытие, которое я могу вызвать с помощью app()->call(...).

Использование Laravel 5.2

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

(в зависимости от вашей версии Laravel) Вы можете сделать что-то вроде:

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

if ($route) {
    app()->call($route->getAction()['uses']);
}
0 голосов
/ 02 июня 2018

Вы не можете.

Имя маршрута связано с URL, а не с выполняемым методом.Это означает, что одно и то же имя маршрута можно использовать для POST и GET (и других методов), что обычно приводит к различным методам контроллера (или даже контроллерам).

Редактировать

Для пояснения: одно имя метода может указывать на несколько методов.Вот пример из php artisan route:list

||ПОЛУЧИТЬ | ГОЛОВА |тест |тест |App \ Http \ Controllers \ TestController @ getTest |веб |

||ПОСТ |тест |тест |App \ Http \ Controllers \ TestController @ postTest |web |

^ Оба названы test и указывают на разные методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...