Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
969 views
in Technique[技术] by (71.8m points)

php - Laravel withValidator() not working as expected

I have this formrequest that contains rules and a withValidator as a second layer of validation.

Note: I am aware that having it unique on the rules would supress the need for this example, but I'll need to do further validations here.

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

I am positive that it enters the if as I've placed a dd previously it to check if it's going inside. However, it proceeds to this method on the Controller and I don't want it to.

public function justATest(UserRequest $request) { 
       dd("HI");
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I'm an idiot and didn't read the full doc.

It needs to specify with an after function,like this:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...