问 | 一个 |
---|---|
框架 | 拉拉维尔 |
框架版本 | 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 特定的问题。