Laravel withValidator() 未按预期工作

abr*_*abr 0 php laravel

我有这个包含规则和 withValidator 作为第二层验证的表单请求。

注意:我知道在规则上具有唯一性会抑制此示例的需要,但我需要在这里进行进一步的验证。

public function rules(Request $request) {
        return [
            "name"              => "required|max:191",
            "begin_date"        => "required|after_or_equal:today|date_format:d-m-Y",
            "end_date"          => "required|after:begin_date|date_format:d-m-Y",
        ];
}

public function withValidator($factory) {
        $result = User::where('name', $this->name)->get();
        if (!$result->isEmpty()) {
            $factory->errors()->add('User', 'Something wrong with this guy');
        }
        return $factory;
}
Run Code Online (Sandbox Code Playgroud)

我确信它会进入,if因为我之前已经放置了一个 dd 来检查它是否进入内部。但是,它在控制器上继续执行此方法,但我不希望它这样做。

public function justATest(UserRequest $request) { 
       dd("HI");
}
Run Code Online (Sandbox Code Playgroud)

abr*_*abr 5

我是个白痴,没有阅读完整的文档。

它需要用 after 函数指定,如下所示:

public function withValidator($factory) {
        $result = User::where('name', $this->name)->get();
        $factory->after(function ($factory) use ($result) {
            if (!$result->isEmpty()) {
                $factory->errors()->add('User', 'Something wrong with this guy');
            }
        });
        return $factory;
}
Run Code Online (Sandbox Code Playgroud)