はじめに
laravelでAuthを実装すると簡単にユーザー登録が可能になりますが、登録内容の変更は別途実装する必要があります。
本投稿では名前、メールアドレスを変更する手順について記載します。
パスワードの変更手順については本投稿では触れませんが、下記サイトがかなり参考になります。
[Laravel 5.7]パスワード変更フォームの作り方
- バージョン
php: 7.2
laravel: 5.8 - Authは実装済みであること
Controllerの編集
UserControllerの作成
$ php artisan make:controller Admin/UserController
UserControllerの編集
User.Controller.php
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; //追加
class UserController extends Controller
{
//下記を追加
//userデータの取得
public function index() {
return view('user.index', ['user' => Auth::user() ]);
}
//userデータの編集
public function edit() {
return view('user.edit', ['user' => Auth::user() ]);
}
//userデータの保存
public function update(Request $request) {
$user_form = $request->all();
$user = Auth::user();
//不要な「_token」の削除
unset($user_form['_token']);
//保存
$user->fill($user_form)->save();
//リダイレクト
return redirect('user/index');
}
}
Viewの作成と編集
ユーザー登録内容の表示
user/index.blade.php
<div class="container m-5">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">ユーザー登録内容</div>
<div class="card-body">
<div class="form-group">
<label for="name">
名前
</label>
<div>
<input class="form-control" value="{{ $user->name }}">
</div>
</div>
<div class="form-group">
<label for="email">
email
</label>
<div>
<input class="form-control" value="{{ $user->email }}">
</div>
</div>
<a href="{{ action('Admin\UserController@edit') }}"><button class="user-btn">ユーザー登録内容の編集</button></a>
</div>
</div>
</div>
</div>
</div>
ユーザー情報の変更
user/edit.blade.php
<div class="container m-5">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">ユーザー登録内容の変更</div>
<div class="card-body">
<form method="POST" action="{{ action('Admin\UserController@update') }}">
<div class="form-group">
<label for="name">
名前
</label>
<div>
<input type="text" name="name" class="form-control" value="{{ $user->name }}">
</div>
</div>
<div class="form-group">
<label for="email">
email
</label>
<div>
<input type="text" name="email" class="form-control" value="{{ $user->email }}">
</div>
<button type="submit" class="user-btn">変更</button>
{{ csrf_field() }}
</form>
</div>
</div>
</div>
</div>
</div>
先ほどのユーザー登録内容の表示画面で「ユーザー登録内容の編集」ボタンをクリックすると下記画面に移る
Routingの設定
user/index.blade.php
Route::group(['middleware' => 'auth:user'], function()
{
Route::get('user/index', 'Admin\UserController@index');
Route::get('user/edit', 'Admin\UserController@edit');
Route::post('user/edit', 'Admin\UserController@update');
});