You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Livewire唯一值验证函数异常:输入有效值时执行卡住

问题解决方法

你的问题出在两个核心点上:

1. 验证规则错误匹配所有行

原来的rows.*.p1会验证所有行的p1字段,哪怕你只编辑了其中一行,只要其他行存在不符合规则的情况(比如空值、重复),validate就会静默失败,但你的错误提示只显示当前编辑行的内容,导致你看不到错误,误以为验证通过却卡在方法里。

2. 唯一验证的忽略ID取值错误

你用了$this->row['id'],但这个变量并非当前编辑行的ID,甚至可能不存在。当ID为null时,Rule::unique不会忽略任何记录,哪怕你输入的是当前行原本的p1值,也会被判定为重复,验证失败却没有对应的错误提示,导致流程卡在validate步骤。

修改后的组件代码:

public function savePaper($rowIndex)
{
    // 获取当前编辑的行数据
    $currentRow = $this->rows[$rowIndex] ?? null;
    
    // 只验证当前行的p1字段,同时正确传入要忽略的ID
    $this->validate([
        "rows.$rowIndex.p1" => [
            'required',
            Rule::unique('dutysheets', 'p1')
                ->ignore($currentRow ? $currentRow['id'] : null)
        ],         
    ]);

    dd('save called');
    if (!is_null($currentRow)) {
        optional(DutySheet::find($currentRow['id']))->update($currentRow);
    }
    $this->editedRowIndex = null;
    $this->editedPaper = null;
}

额外提示:

视图里的wire:model.differ是拼写错误,正确的延迟绑定指令是wire:model.defer,虽然移除唯一规则后功能正常,但建议修正这个错误,避免后续出现其他潜在问题。

内容的提问来源于stack exchange,提问作者Khalil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:05:16