laravel - 使用 Livewire 时 Laravel 审计不起作用
问题描述
问 | 一个 |
---|---|
框架 | 拉拉维尔 |
框架版本 | 8.0 |
包版本 | 10.0 |
PHP版本 | 7.4 |
使用 Livewire 时,通过它触发的任何事件,例如创建。审计未注册该事件。
预期行为创建一个新条目,例如通过 Livewire 的潜在客户,它应该被审计捕获并相应地添加。
重现步骤填写表格以创建潜在客户后,将调用此代码:
$validated = $this->validate();
//Manually set defaults
$validated['lead_type'] = 'Manual';
$validated['is_approved'] = 1;
$validated['rating'] = $this->rating;
if ($validated['lead_temp'] == 'Temp') {
$validated['lead_temp'] = 'Default';
}
if ($validated['lead_status_id'] == 0) {
$validated['lead_status_id'] = '1'; //default set to unassigned
}
//Manually set IDs
$validated['company_id'] = auth()->user()->company_id;
$validated['flag_alert_id'] = 1;
$validated['campaign_id'] = 1;
$validated['quote_id'] = 1;
$validated['quote_data_id'] = 1;
$validated['form_id'] = 1;
$validated['form_data_id'] = 1;
$validated['number_id'] = 1;
$validated['email_id'] = 1;
if(!empty($validated['user_id']) || $validated['user_id'] == 0) {
$validated['user_id'] = auth()->user()->id;
}
else {
$validated['user_id'] = $this->user_id;
}
$leadID = Lead::create($validated)->id;
if(!empty($this->products)){
$this->linkProductsToLeads($leadID);
}
if(!empty($this->files)){
$this->uploadFiles($leadID);
}
$this->resetForm();
session()->flash('snack-success', 'Lead successfully created!');
$this->dispatchBrowserEvent('success-shown');
}
其中“$leadID = Lead::create($validated)->id”不会出现在数据库中。
可能的解决方案我不知道如何解决这个问题,在这种情况下通过控制器使用基于 Laravel 的正常创建 LeadsController 时,潜在客户将显示在审计表中。通过 JS Ajax 并命中端点的系统的其他部分工作得非常好,似乎是 Livewire 特定的问题。
解决方案
推荐阅读
- ios - 网站在滚动时闪烁 - iOS 移动设备。我该如何解决?
- python - 从 JupyterHub 笔记本服务器获取当前笔记本/用户上下文?
- c# - 为什么在尝试将 COM 引用添加到“Windows 脚本宿主对象模型”时收到此错误消息?
- python - 在不改变值的情况下,将 csv 读入具有逗号 *within* csv 行的第一个/索引单元格的 pandas
- python - 如何将八个方向效果添加到我的 A 星算法而不是 4 个动作?
- html - 如何修复粘性页脚?Flex 或 Grid 不工作
- c# - 如何打印具有高度的树?
- angular - 如何检查 url 是否可以在 Angular 8 中访问?
- c++ - ECDSA_do_verify 无法仅验证某些哈希
- javascript - 滚动事件关闭菜单后,导航下拉切换不显示菜单