💨

Laravel Filamentでユーザー詳細画面のパスワード入力フィールドを作る

2023/11/20に公開

こんな感じにする
ここでも書いたけど、こっちでも

Components\TextInput::make('password')->label('パスワード')
                    //オートコンプリートを無効にする
                    ->autocomplete(false)
                    //パスワードの入力として登録する
                    ->password()
                    //保存時にハッシュ加されたパスワードを送る
                    ->dehydrateStateUsing(fn (string $state): string => Hash::make($state))
                    //パスワードの入力が無い時は何もしない
                    ->dehydrated(fn (?string $state): bool => filled($state))
                    //新規作成時だけ必須
                    ->required(fn (string $operation): bool => $operation === 'create')
		    //半角英数字記号それぞれ1文字以上使用し、8文字以上かどうか
		    ->regex('/\A(?=.*?[a-z])(?=.*?\d)(?=.*?[!-\/:-@[-`{-~])[!-~]{8,}+\z/i')
		    //エラー文
		    ->validationMessages([
		      'regex' => ':attributeは半角英数字記号それぞれ1文字以上使用した8文字以上で指定してください',
		    ]),

こんな感じにエラーになる。

Discussion