我正在try 使用livewire 3对表单进行实时验证.根据livewire文档,当try 使用运行时语法(如Rule::password())时,您应该定义一个规则方法,而不是使用#Rule.当你想实时验证时,你应该使用wire:model.live或wire:model.blur.但是,我无法让验证实时运行.验证仅在我单击注册按钮时运行.
在我的Register livewire组件中,我定义了如下规则方法
public function rules() {
return [
'name' => ['required', 'string', 'min:2'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
'password' => ['required', 'string', 'confirmed', Rules\Password::defaults()],
];
}
然后,在我的注册方法中,我确保调用了$This->;Valify(),如下所示.
public function register(): void
{
$validated = $this->validate();
$validated['password'] = Hash::make($validated['password']);
event(new Registered($user = User::create($validated)));
auth()->login($user);
$this->redirect(RouteServiceProvider::HOME, navigate: true);
}
同样在我看来,我确保以如下方式添加wire:mod.blur
<x-text-input wire:model.blur="name" id="name" class="block mt-1 w-full" type="text" name="name" required autofocus autocomplete="name" />
<x-input-error :messages="$errors->get('name')" class="mt-2" />
我做错了什么?