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

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));

现在,我希望自动传递所需的参数,而不是手动传递参数.

所以我需要得到route namecontroller method namecontroller method type自动(就像返回控制器名称的class_basename(Route::current()->controller)一样).

那么我该怎么做呢?

推荐答案

您可以将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();
    }
}

Notice:返回类型$route->methods()是包含所有有效请求方法(GET、HEAD、POST等)的数组

Php相关问答推荐

composer如何解析包名?

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

PHP空数组定义与开始或结束逗号

添加并显示单价字段到WooCommerce产品变化

FlySystem v3:使用本地适配器时出现问题

如何用Ubuntu 22.04在VSCode中启用XDebug

除WooCommerce中的特定国家/地区外,有条件地要求填写邮政编码 checkout 字段

随机显示WordPress快捷代码功能时出现问题

重命名 WordPress 中现有的自定义分类法名称和标签

用于更新 WooCommerce 管理产品列表中库存数量的自定义输入字段

在 Heroku 上部署 Sylius - 路由不正确

使用用户元数据填写 woocommerce checkout 字段

从插件更改主题功能,function_exists 不起作用

Laravel路由中的符号在slug中会创建额外的斜杠

WooCommerce – 在新订单邮箱通知中显示产品分类计数

为 WordPress 页面创建新功能

如何在不解压缩/重新压缩的情况下连接(连接)两个缩小的值

使用 splat 运算符时按引用传递 (...)

如何使用先前 SELECT 的结果来 SELECT SQL 数据

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde