Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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>

下記画面のようになる
image.png

ユーザー情報の変更

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

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');
});
syokichi09
プログラマーという働き方に惹かれて、webエンジニアへの転職に向けて勉強中です! プログラミング学習時に学んだことを忘れない為に、学んだことをoutputしていきます。 まだエンジニアを目指して勉強中の半人前でして、間違いが多々あるかもしれませんが、参考になれば幸いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away