ユーザーアカウント登録内容の変更の手順


# はじめに
laravelでAuthを実装すると簡単にユーザー登録が可能になりますが、登録内容の変更は別途実装する必要があります。
本投稿では名前、メールアドレスを変更する手順について記載します。
パスワードの変更手順については本投稿では触れませんが、下記サイトがかなり参考になります。
[[Laravel 5.7]パスワード変更フォームの作り方](http://ryota01.com/archives/40)


- バージョン
  php: 7.2
  laravel: 5.8
- Authは実装済みであること

# Controllerの編集
UserControllerの作成

```
$ php artisan make:controller Admin/UserController
```
UserControllerの編集

```php: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の作成と編集
ユーザー登録内容の表示

```php: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>
```

下記画面のようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580653/bde52a8c-21a8-76d8-b322-49a3ff290a7c.png)


ユーザー情報の変更

```php: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>
```
先ほどのユーザー登録内容の表示画面で「ユーザー登録内容の編集」ボタンをクリックすると下記画面に移る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580653/af81a5e9-7be9-877b-77e1-e965db0ba8fb.png)


# Routingの設定

```php: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');
});
```