如何在Laravel Livewire中不使用Form Request创建可复用自定义验证规则
Livewire 的验证逻辑底层基于 Laravel 原生验证器实现,完全可以不依赖 FormRequest 类复用所有已有的自定义验证规则,以下是不同场景的实现方式:
场景1:复用通过 Artisan 生成的独立规则类
你通过 php artisan make:rule 生成的自定义规则类可以直接传入验证规则数组中使用,无需额外适配:
// 先引入自定义规则类 use App\Rules\你的自定义规则类名; public function store() { $this->validate([ 'foo' => ['required', new 你的自定义规则类名()] // 直接实例化规则类即可 ]); }
场景2:复用已有 FormRequest 中定义的规则
如果你之前已经在 ModelStoreRequest 等 FormRequest 类中定义好了验证规则,可以直接获取规则数组使用,不需要实例化 HTTP 请求对象:
// 引入原有 FormRequest 类 use App\Http\Requests\ModelStoreRequest; public function store() { // 直接调用 rules 方法获取规则数组 $this->validate((new ModelStoreRequest())->rules()); // 若 rules 方法定义为静态方法,也可直接静态调用 // $this->validate(ModelStoreRequest::rules()); }
场景3:复用通过 Validator 扩展注册的字符串规则
如果你是通过 Validator::extend 方法注册的别名形式自定义规则,直接和原生规则一样使用即可:
public function store() { $this->validate([ 'foo' => 'required|你注册的规则别名' ]); }
额外说明:如果需要同时复用自定义错误提示,$this->validate 方法的第二个参数支持传入自定义消息数组,用法和 Laravel 原生验证完全一致。
内容的提问来源于stack exchange,提问作者toffeegz
相关产品推荐
相关产品推荐

