【问题标题】:Return callback based on route name in Laravel根据 Laravel 中的路由名称返回回调
【发布时间】:2019-10-17 06:28:14
【问题描述】:
我在互联网上搜索了很多,但找不到解决方案。
我需要根据路由名称返回路由上注册的callback。
示例
我的路线/api.php:
Route::get('test', 'TestController@test')->name('test');
也就是说,根据上面的例子,我想捕获字符串TestController@test,说明路由是'test'。
有可能吗?
有人可以帮我吗?
提前感谢您的关注。
【问题讨论】:
标签:
php
laravel
controller
routes
【解决方案1】:
您可以在 Route 实例上使用 getActionName() 或 getAction('controller') 来获取此信息。您将获得一个 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());
【解决方案2】:
如果您只想获得TestController@test,您可以这样做
substr(strrchr(Route::getRoutes()->getByName('test')->action['uses'], '\\'), 1);
希望对你有帮助