Возврат обратного вызова на основе имени маршрута в Laravel - PullRequest
0 голосов
/ 17 октября 2019

Я много искал в Интернете, но не смог найти решение.

Мне нужно вернуть callback, зарегистрированный на маршруте, на основе имени маршрута.


Пример

Мои маршруты / api.php:

Route::get('test', 'TestController@test')->name('test');

То есть, исходя из приведенного выше примера, я хочу захватить строку TestController@test,заявив, что маршрут «тестовый».

Это возможно?

Может ли кто-нибудь мне помочь?

Заранее благодарю за внимание.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Если вы хотите получить только TestController@test, вы можете сделать это следующим образом

substr(strrchr(Route::getRoutes()->getByName('test')->action['uses'], '\\'), 1);

Надеюсь, это поможет

1 голос
/ 17 октября 2019

Вы можете использовать getActionName() или getAction('controller') в экземпляре Route для получения этой информации. Вы получите FQCN. Чтобы получить только последнюю часть, вы можете использовать class_basename():

$route = Route::getRoutes()->getByName('test');

$action = $route->getActionName();
// 'App\Http\Controllers\TestController@test'

$basename = class_basename($action); 
// 'TestController@test'

// all together now
class_basename(Route::getRoutes()->getByName('test')->getActionName());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...