laravel/uiをセットアップするとユーザー登録することができるようになりますが、登録できる項目は、
- 名前
- パスワード
のみです。
ECサイトのように、他の項目も登録できるようにします。また、修正する機能も追加します。
作成したときの環境
- macOS 11.2.3
- PHP 8.0.3
- Laravel 6.20.22
環境設定は、こちらを参考にしてください。
マイグレーション
マイグレーションファイルを修正する
マイグレーションファイルを修正します。
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('postal_code')->comment('郵便番号');
$table->integer('pref_id')->comment('都道府県ID');
$table->string('city')->comment('市区町村');
$table->string('town')->comment('町名番地等');
$table->string('building')->nullable()->comment('建物等');
$table->string('phone_number')->comment('電話番号');
$table->rememberToken();
$table->timestamps();
});
}
9-14行目に項目を追加しています。
マイグレーションを実行する
マイグレーションを実行します。
php artisan migrate
テーブルが作成されていることを確認します。

コントローラとモデル、フォームリクエスト
ユーザー登録用のコントローラは既に”app/Http/Controllers/Auth/RegisterController.php”がありますので、それを使います。
ユーザー修正用には”app/Http/Controllers/UserController.php”を新規作成します。
Userモデル
“RegisterController”にバリデーションルールの記載がありますが、同じものを”UserController”でも使いたいので、Userモデルに記載することにします。”RegisterController”からは、バリデーションルールとエラーメッセージの内容は削除しました。
/**
* バリデーションルール
* Auth\RegisterControllerから移動しています。
* 追加したユーザーの項目を追記しています。
*
* @var array
*/
public static $rules = [
'name' => ['required', 'string', 'max:50'],
'email' => ['required', 'string', 'email:rfc', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'postal_code' => ['required', 'regex:/^[0-9]{3}-[0-9]{4}$/'],
'pref_id' => ['required'],
'city' => ['required', 'max:50',],
'town' => ['required', 'max:50'],
'building' => ['max:50'],
'phone_number' => ['required', 'regex:/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{4}$/'],
];
/**
* バリデーションエラーメッセージ
* Auth\RegisterControllerから移動しています。
* 追加したユーザーの項目を追記しています。
*
* @var array
*/
public static $messages = [
'name.required' => 'お名前を入力してください。',
'name.max' => 'お名前は50文字以内で入力してください。',
'email.required' => 'E-mailアドレスを入力してください。',
'email.email' => '正しいE-mailアドレスを入力してください。',
'email.max' => 'E-mailアドレスは255文字以内で入力してください。',
'email.unique' => 'そのメールアドレスは既に登録されています。',
'password.required' => 'パスワードを入力してください。',
'password.min' => 'パスワードは8文字以上で入力してください。',
'password.confirmed' => '入力されたパスワードが一致しません。',
'postal_code.required' => '郵便番号を入力してください。',
'postal_code.regex' => '郵便番号は、半角数字3桁、半角ハイフン、半角数字4桁、の形式で入力してください。',
'pref_id.required' => '都道府県を選択してください。',
'city.required' => '市区町村を入力してください。',
'city.max' => '市区町村は50文字以内で入力してください。',
'town.required' => '町名番地等を入力してください。',
'town.max' => '町名番地等は50文字以内で入力してください',
'building.required' => '建物等は50文字以内で入力してください。',
'phone_number.required' => '電話番号を入力してください。',
'phone_number.regex' => '電話番号は、半角数字と半角ハイフンで入力してください。'
];
また、都道府県はselectボックスから選択した都道府県のIDの値をインサート・アップデートに使用したいので、リスト作成用の連想配列もUserモデルに用意しました。
/**
* 都道府県リスト
* viewで使用する都道府県のリスト
*
* @var array
*/
public static $prefs = [
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 => '鳥取県', 32 => '島根県', 33 => '岡山県', 34 => '広島県', 35 => '山口県',
36 => '徳島県', 37 => '香川県', 38 => '愛媛県', 39 => '高知県',
40 => '福岡県', 41 => '佐賀県', 42 => '長崎県', 43 => '熊本県', 44 => '大分県', 45 => '宮崎県', 46 => '鹿児島県', 47 => '沖縄県',
];
RegisterController
ユーザー登録後のリダイレクト先を変更します。
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
// プロパティの値を書き換えて、ユーザー登録後のリダイレクト先を変更しています。
$this->redirectTo = route('user.index');
}
コンストラクタでプロパティの値を変更せずに
protected $redirectTo = route('user.index');
上記のように、直接変更してもOKです。
validator()メソッドは、下記のようにUserモデルに移動したバリデーションルールとエラーメッセージを使うように修正しました。
use App\User; // 追記
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
// バリデーションルールとエラーメッセージは、
// UserControllerと共用したいので、Userモデルに移動しています。
return Validator::make($data, User::$rules, User::$messages);
}
create()アクションメソッドは、fill()を使って登録できるようにしました。
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
// 元はUser::create()メソッドを使って登録されていたのを、
// fill()メソッドとsave()メソッドを使って登録しています。
$user = new User();
$user->fill($data);
// パスワードはハッシュ化しないといけないので、値を上書きしています。
$user->password = Hash::make($data['password']);
$user->save();
return $user;
}
UserController
ユーザー情報を修正するためのUserControllerを作成します。
php artisan make:controller UserController
作成したUserControllerを修正します。
ユーザー情報を表示するためのindex()アクションメソッド。
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('user.index');
}
ユーザー情報を編集するためのedit()アクションメソッド。
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
return view('user.edit');
}
レコードをアップデートするupdate()アクションメソッド。
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\User $user
* @return \Illuminate\Http\Response
*/
public function update(UserRequest $request, User $user)
{
$user->fill($request->all());
// パスワードの項目があるとき(つまり、パスワードを変更するとき)
if (!is_null($request->password)) {
// パスワードの値をハッシュ化して上書きする。
$user->password = Hash::make($request->password);
} else {
// パスワードの項目に値がないときは、アップデートの対象にしない。
unset($user->password);
}
$user->save();
return redirect(route('user.index'));
}
パスワードの項目が入力されているときは、値をハッシュ化してRequestオブジェクトのpasswordプロパティを上書きします。パスワードの項目が入力されていないとき(=nullのとき)はパスワードを変更しないものとして、passwordプロパティを削除し、アップデートの対象から外します。
また、システム全体で「バリデーションはFormRequestを使用する」という前提のもとで、統一感を出すために、UserRequestクラスを作成してバリデーションを行うようにしています。
UserRequest
UserRequestを作成します。
php artisan make:request UserRequest
作成したUserRequestを編集します。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
use App\User;
/**
* UserRequest ユーザー更新用FormRequestクラス
* バリデーションルールとエラーメッセージは、
* Auth\RegisterControllerクラスと共用したいので、
* Userモデルに記載しています。
*/
class UserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// UserRequestを使えるようにtrueを返します。
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(Request $request)
{
// バリデーションルールはUserモデルに記載しています。
$rules = User::$rules;
// メソッドがPATCHのとき(つまりupdate()アクションが呼ばれるとき)
if ($request->method() == 'PATCH') {
// passwordのrequiredの条件を外し、nullableにします。
$key = array_search('required', $rules['password']);
unset($rules['password'][$key]);
array_push($rules['password'], 'nullable');
// updateのときに、元のemailと同じ値であってもバリデーションエラーにならないようにします。
// https://readouble.com/laravel/6.x/ja/validation.html#rule-unique
$key = array_search('unique:users', $rules['email']);
unset($rules['email'][$key]);
array_push($rules['email'], Rule::unique('users')->ignore(Auth::user()));
}
return $rules;
}
/**
* バリデーションエラーメッセージ
*
* @return array
*/
public function messages()
{
// Userモデルに記述しているエラーメッセージを返します。
return User::$messages;
}
}
バリデーションルール、エラーメッセージともに、Userモデルに記述した内容を利用しています。
UserController@updateが呼ばれるときは、メソッドが”PATCH”なので、そのときだけバリデーションルールを変更するようにしています。
- passwordの値がnullのときは、”required”のルールを外す。
- emailの値を変更しなかったときは、”unique”バリデーションエラーを避けるようにする。
“unique”バリデーションエラーの件は、ドキュメントのこちらに記述があります。
uniqueチェックで指定したIDを除外したい場合があります。たとえばユーザー名、メールアドレス、それと住所の「プロフィール更新」の状況を考えてください。メールアドレスは一意であることを確認したいと思います。しかし、もしユーザーが名前フィールドだけ変更し、メールフィールドを変更しなければ、そのユーザーがすでにそのメールアドレスの所有者として登録されているために起きるバリデーションエラーを避けたいと思うでしょう。
https://readouble.com/laravel/6.x/ja/validation.html#rule-unique
ビューとビューの日本語化
ビューのレイアウトは”resources/views/layouts/app.blade.php”を利用します。ユーザー情報修正画面へのリンクを追加します。
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'Laravel') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto">
</ul>
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a href="{{ route('user.edit', Auth::user()) }}" class="dropdown-item">{{ __('Modify') }}</a>
<a class="dropdown-item" href="{{ route('logout') }}" onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST"
style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
</div>
</nav>
<main class="py-4">
@yield('content')
</main>
</div>
</body>
</html>
63行目にリンクを追加しています。
ユーザー登録画面用の”resources/views/auth/register.blade.php”を修正します。登録項目を追加しています。
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" autocomplete="new-password">
</div>
</div>
<div class="form-group row">
<label for="postal_code" class="col-md-4 col-form-label text-md-right">{{ __('Postal Code') }}</label>
<div class="col-md-6">
<input id="postal_code" type="text" class="form-control @error('postal_code') is-invalid @enderror" name="postal_code" value="{{ old('postal_code') }}" autocomplete="postal_code" placeholder="000-0000">
@error('postal_code')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="pref" class="col-md-4 col-form-label text-md-right">{{ __('Prefectures') }}</label>
<div class="col-md-6">
<select name="pref_id" id="pref_id" class="form-control @error('pref_id') is-invalid @enderror">
<option value="">-- 選択してください --</option>
@foreach (App\User::$prefs as $key => $pref)
<option value="{{ $key }}" @if (old('pref_id') == $key) selected @endif>{{ $pref }}</option>
@endforeach
</select>
@error('pref_id')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="city" class="col-md-4 col-form-label text-md-right">{{ __('City') }}</label>
<div class="col-md-6">
<input id="city" type="text" class="form-control @error('city') is-invalid @enderror" name="city" value="{{ old('city') }}" autocomplete="city" placeholder="大阪市北区">
@error('city')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="town" class="col-md-4 col-form-label text-md-right">{{ __('Town') }}</label>
<div class="col-md-6">
<input id="town" type="text" class="form-control @error('town') is-invalid @enderror" name="town" value="{{ old('town') }}" autocomplete="town" placeholder="中之島1丁目1-1">
@error('town')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="building" class="col-md-4 col-form-label text-md-right">{{ __('Building') }}</label>
<div class="col-md-6">
<input id="building" type="text" class="form-control @error('bilding') is-invalid @enderror" name="building" value="{{ old('building') }}" autocomplete="building" placeholder="中之島○○ビル101号室">
@error('building')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="phone_number" class="col-md-4 col-form-label text-md-right">{{ __('Phone Number') }}</label>
<div class="col-md-6">
<input id="phone number" type="tel" class="form-control @error('phone_number') is-invalid @enderror" name="phone_number" value="{{ old('phone_number') }}" autocomplete="phone_number" placeholder="06-0000-0000">
@error('phone_number')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
修正画面用の”resources/views/user/edit.blade.php”を作成します。”resources/views/auth/register.blade.php”をコピーして編集しました。
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md">
<div class="card">
<div class="card-header">{{ __('Modify') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('user.update', Auth::user()) }}">
@method('PATCH')
@csrf
<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name', Auth::user()->name) }}" autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email', Auth::user()->email) }}" autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" autocomplete="new-password">
</div>
</div>
<div class="form-group row">
<label for="postal_code" class="col-md-4 col-form-label text-md-right">{{ __('Postal Code') }}</label>
<div class="col-md-6">
<input id="postal_code" type="text" class="form-control @error('postal_code') is-invalid @enderror" name="postal_code" value="{{ old('postal_code', Auth::user()->postal_code) }}" autocomplete="postal_code" placeholder="000-0000">
@error('postal_code')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="pref" class="col-md-4 col-form-label text-md-right">{{ __('Prefectures') }}</label>
<div class="col-md-6">
<select name="pref_id" id="pref_id" class="form-control @error('pref_id') is-invalid @enderror">
<option value="">-- 選択してください --</option>
@foreach (App\User::$prefs as $key => $pref)
<option value="{{ $key }}" @if (old('pref_id', Auth::user()->pref_id) == $key) selected @endif>{{ $pref }}</option>
@endforeach
</select>
@error('pref_id')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="city" class="col-md-4 col-form-label text-md-right">{{ __('City') }}</label>
<div class="col-md-6">
<input id="city" type="text" class="form-control @error('city') is-invalid @enderror" name="city" value="{{ old('city', Auth::user()->city) }}" autocomplete="city" placeholder="大阪市北区">
@error('city')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="town" class="col-md-4 col-form-label text-md-right">{{ __('Town') }}</label>
<div class="col-md-6">
<input id="town" type="text" class="form-control @error('town') is-invalid @enderror" name="town" value="{{ old('town', Auth::user()->town) }}" autocomplete="town" placeholder="中之島1丁目1-1">
@error('town')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="building" class="col-md-4 col-form-label text-md-right">{{ __('Building') }}</label>
<div class="col-md-6">
<input id="building" type="text" class="form-control @error('building') is-invalid @enderror" name="building" value="{{ old('building', Auth::user()->building) }}" autocomplete="building" placeholder="中之島○○ビル101号室">
@error('building')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="phone_number" class="col-md-4 col-form-label text-md-right">{{ __('Phone Number') }}</label>
<div class="col-md-6">
<input id="phone number" type="tel" class="form-control @error('phone_number') is-invalid @enderror" name="phone_number" value="{{ old('phone_number', Auth::user()->phone_number) }}" autocomplete="phone_number" placeholder="06-0000-0000">
@error('phone_number')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Modify') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
ビューを日本語化するための”resources/lang/ja.json”を作成します。
{
"Login": "ログイン",
"Logout": "ログアウト",
"Register": "会員登録",
"Modify": "会員情報修正",
"Name": "お名前",
"E-Mail Address": "E-mailアドレス",
"Password": "パスワード",
"Confirm Password": "パスワード再入力",
"Remember Me": "ログイン情報を記憶しておく",
"Forgot Your Password?": "パスワードを忘れた方はこちら",
"Postal Code": "郵便番号",
"Prefectures": "都道府県",
"City": "市区町村",
"Town": "町名番地等",
"Building": "建物等",
"Phone Number": "電話番号"
}
日本語化については、こちらにも書きました。
ルーティング
ユーザー修正のためのルーティングを設定します。
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
// 必要なルーティングのみに限定する
Route::resource('user', 'UserController')->only(['index', 'edit', 'update'])->middleware('auth');
“user”へのルーティングは、index()、edit()、update()以外必要ないので、他のアクションメソッドへのアクセスは制限しています。
完成
ユーザー登録

ユーザー情報表示

ユーザー情報修正
