微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在中间件中获取 Laravel 中动态路由的类和函数名称

如何解决无法在中间件中获取 Laravel 中动态路由的类和函数名称

我已经为 routes/web.PHP 中的 CRUD 功能设置了动态路由

// generic CRUD views
// list
Route::get('{controller}',function($controller){
    $route = 'App\\Http\\Controllers\\' . Str::studly($controller) . 'Controller@viewList';
    return App::call($route);
})->where(['controller' => Config::get('constants.REGEX_KEBAB_CASE')]);

// create
Route::get('{controller}/new',function($controller){
    $route = 'App\\Http\\Controllers\\' . Str::studly($controller) . 'Controller@viewForm';
    return App::call($route,['id' => null]);
})->where(['controller' => Config::get('constants.REGEX_KEBAB_CASE')]);

// read
Route::get('{controller}/{id}',function($controller,$id){
    $route = 'App\\Http\\Controllers\\' . Str::studly($controller) . 'Controller@viewData';
    return App::call($route,['id' => $id]);
})->where(['controller' => Config::get('constants.REGEX_KEBAB_CASE'),'id' => Config::get('constants.REGEX_NUMERIC')]);

// update
Route::get('{controller}/{id}/edit',$id){
    $route = 'App\\Http\\Controllers\\' . Str::studly($controller) . 'Controller@viewForm';
    return App::call($route,'id' => Config::get('constants.REGEX_NUMERIC')]);

// delete
Route::get('{controller}/{id}/delete',$id){
    $route = 'App\\Http\\Controllers\\' . Str::studly($controller) . 'Controller@viewDelete';
    return App::call($route,'id' => Config::get('constants.REGEX_NUMERIC')]);

这里的想法是拥有一个包含所有必要功能viewListviewData 等)的基本控制器,并让子控制器继承它们。

当我尝试在这样的中间件中获取控制器和函数名称

$action = explode('@',class_basename($request->route()->getActionname()));

我无法获取这些动态路由的名称

它适用于这样的静态路由

Route::get('dashboard','App\Http\Controllers\SystemController@viewDashboard');

如何使用我所做的路由设置获取中间件中当前请求的控制器的类和函数名称

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。