Laravel:ユーザー登録時にroleも一緒にcreateする方法
目次
Laravel:ユーザー登録時にroleも一緒にcreateする方法
管理者による新規ユーザー作成関連として、前回までの記事で下記構成を構築しました。
この状態でユーザーの登録項目を変更しようとしたところ、新設した項目(role等)が初期値で入ってしまいました。
以前カスタマイズした場所なのですが、すっかり忘れていたので備忘録に残します。
項目追加時は2個所の変更が必要です
- \app\Http\Controllers\RegisterController.php
- \app\User.php
ControllerとModelです。
よく考えれば当たり前なのですが、私はUser.phpの変更をすっかり忘れてしまいました。
そのため、roleの値が初期値で登録されるという現象が発生していました。
RegisterController.phpに追記
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/** * Get a validator for an incoming registration request. * 着信登録要求のバリデータを取得します。 * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', 'role' => 'required|Integer|max:2', //追加ヶ所 ]); } /** * Create a new user instance after a valid registration. * 有効な登録後に新しいユーザーインスタンスを作成します。 * @param array $data * @return \App\User */ protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'role' => $data['role'], //追加ヶ所 ]); } |
バリデータとクリエイトに新規追加時に登録したい値を記載します。
User.phpに追記
1 2 3 4 5 6 |
protected $fillable = [ 'name', 'email', 'password', 'role', //追加ヶ所 ]; |
$fillable の中に新規追加時に登録したい値を記載します。
まとめ
この2つのファイルを変更すれば良いだけなので、例えば『苗字と名前を分ける』『ログインIDを新設する』なんて時も簡単に対応できます。
-
前の記事
Laravel:管理者によるregister実行後の動作を変える 2019.01.18
-
次の記事
Laravel:roleによってユーザー一覧を可変させる 2019.01.21
コメントを残す