Laravel Adminを使ってユーザーの情報を管理したい場合があると思います。
ただ、FormやModelが通常とは違いAdminで独自なので、前処理、後処理をどうやってけけばいいのか悩みますね。
結論から言うとこんな感じにすると良いかと思います。
protected function form()
{
$form = new Form(new User());
$form->text('name', __('Name'));
$form->email('email', __('Email'));
$form->password('password', __('Password'));
$form->saving(function (Form $form) {
if ($form->password) { // パスワードをハッシュ化
$form->password = bcrypt($form->password);
}else{ // パスワード欄が空欄なら変更しない
$form->password = $form->model()->password;
}
});
return $form;
}
ここで問題になるのが、パスワードの扱いですね。
パスワードをどうやってハッシュ化して保存するか?
パスワードを変更したない場合はどうするか?
という2点。
まず、フォームから入力されたものや保存したい内容は$form->{カラム名}で入ってきますので、$form->password = bcrypt($form->password);
でハッシュ化できます。
次に空欄の場合変更せずに保存したいというところは、保存前のデータが$form->model()->{カラム名}
でアクセスできますので、これを使うと良いでしょう。