Допустим у нас есть вот такие поля в ресурсе юзера
1class UserResource extends Resource 2{ 3 protected static ?string $model = User::class; 4 5 public static function form(Form $form): Form 6 { 7 return $form 8 ->schema([ 9 Forms\Components\Card::make()->schema([ 10 Forms\Components\TextInput::make('name')->required(), 11 Forms\Components\TextInput::make('email')->required()->unique(ignoreRecord: true), 12 Forms\Components\TextInput::make('password')->password()->minLength(8) 13 ])14 ]);15 }16 17...
Необходимо добавить еще одно поле для подтверждения пароля
1Forms\Components\TextInput::make('passwordConfirmation')->password()->minLength(8)
Далее производим синхронизацию этих полей, в итоге должно получиться так
1class UserResource extends Resource 2{ 3 protected static ?string $model = User::class; 4 5 public static function form(Form $form): Form 6 { 7 return $form 8 ->schema([ 9 Forms\Components\Card::make()->schema([10 Forms\Components\TextInput::make('name')->required(),11 Forms\Components\TextInput::make('email')->required()->unique(ignoreRecord: true),12 Forms\Components\TextInput::make('password') 13 ->password() 14 ->autocomplete('new-password') // убираем автокомплит от браузера 15 // поле обязательно при создании новой записи 16 ->required(fn(Page $livewire): bool => $livewire instanceof Pages\CreateUser) 17 ->minLength(8) 18 ->same('passwordConfirmation') // должно быть равно полю подтверждения 19 ->dehydrated(fn($state) => filled($state)) // записываем когда поле заполнено 20 ->dehydrateStateUsing(fn($state) => Hash::make($state)), // хэшируем введённый пароль 21 Forms\Components\TextInput::make('passwordConfirmation') // поле для ввода повтора пароля 22 ->password() 23 ->required(fn(Page $livewire): bool => $livewire instanceof Pages\CreateUser) 24 ->minLength(8) 25 ->dehydrated(false) // откл. дегидрацию пароля, чтобы поле не попало в запись 26 ])27 ]);28 }29 30...
Комментарии
Комментариев нет