如何自动获取 Laravel 控制器方法名称和方法类型
P粉573809727
P粉573809727 2024-02-26 13:54:16
0
1
441

基本上,每次控制器方法运行时我都会调用一个事件:

public function destroy(User $user)
{
   event(new AdminActivity('admin.users.destroy',class_basename(Route::current()->controller),'destroy','DELETE'));

   ...
}

事实上它正在保存这些信息:

event(new AdminActivity(ROUTE_NAME,CONTROLLER_NAME,CONTROLLER_METHOD_NAME,CONTROLLER_METHOD_TYPE));

现在我想自动传递所需的参数,而不是手动传递参数。

所以我需要获取路由名称控制器方法名称控制器方法类型 auto(就像 class_basename(Route::current ()->controller) 返回控制器名称)。

那么我该怎么做呢?

P粉573809727
P粉573809727

全部回复(1)
P粉616383625

您可以将Route::current()传递给事件,然后从\Illuminate\Routing\Route对象中获取您需要的信息

public function destroy(User $user)
{
   event(new AdminActivity(\Illuminate\Support\Facades\Route::current()));

   ...
}

然后,在您的 AdminActivity 事件类中

class AdminActivity
{
    public function __construct(\Illuminate\Routing\Route $route)
    {
        $controllerClass  = class_basename($route->getController());
        $controllerMethod = $route->getActionMethod();
        $routeName        = $route->getAction('as');
        $methods          = $route->methods();
    }
}

注意$route->methods()的返回类型是一个数组,包含所有有效的请求方法(GET、HEAD、POST...)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板