Laravelで投稿アプリの機能を作成 ~新規登録画面編~

# はじめに
Laravelで投稿アプリの機能を汎用的に使えるように、CRUD、ログイン周り等の記事を紹介してきましたが、最後にregister（新規登録）のカスタマイズを紹介したいと思います。

#前提
これまで同様、前回のデータを元に修正していくので、一緒にデータを作りたい方は
下記から見ることをお勧めします
①https://qiita.com/ProgramingDai/items/cf6944f9cd0ac08f4e3e
②https://qiita.com/ProgramingDai/items/249acc8894079ee58268
③https://qiita.com/ProgramingDai/items/fee669e5a8cf67f0e38e
④https://qiita.com/ProgramingDai/items/4fe2e3cc90987356c9c4

#実装イメージ
登録後のリダイレクト先変更
↓
「register.blade.php」の修正
↓
ログイン、新規登録の相互リンク
↓
デフォルトバリデーションメッセージのカスタマイズ

# 手順レシピ
1.登録後のリダイレクト先変更

```php:/app/Http/Auth/RegisterController.php
// 中略

// protected $redirectTo = '/home'; // デフォルト
protected $redirectTo = '/auth'; // リダイレクトしたいルートを書く

// 中略
```

2.「register.blade.php」の修正
そっくりそのままコピペ

```html:/resources/views/auth/register.blade.php
@extends('layouts.postapp')
@section('maincopy', 'アカウント登録してください')

@section('content')
<form class="form-horizontal" method="POST" action="{{ route('register') }}">
{{ csrf_field() }}

<div class="error_msg">
@if ($errors->has('name'))
{{ $errors->first('name') }}
@endif
</div>
<input id="name" type="text" class="form" name="name" placeholder="アカウント名" value="{{ old('name') }}">

<div class="error_msg">
@if ($errors->has('email'))
{{ $errors->first('email') }}
@endif
</div>
<input id="email" type="email" class="form" name="email" placeholder="メールアドレス" value="{{ old('email') }}">

<div class="error_msg">
@if ($errors->has('password'))
{{ $errors->first('password') }}
@endif
</div>
<input id="password" type="password" class="form" name="password" placeholder="パスワード">
<div><input id="password-confirm" type="password" class="form" name="password_confirmation" placeholder="再度パスワードをご入力ください"></div>

<input type="submit" class="create" value="ユーザー登録">
</form>       
@endsection
```

３.ログイン、新規登録の相互リンク

```html:/resources/views/layouts/postapp.blade.php
<!--中略-->
        @if(Auth::check())
        <!--認証中なら-->
        <a href="{{ route('post.logout') }}"><img src="{{ asset('img/logout.svg') }}" alt="ログアウト"></a>
        @else
        <!--未認証なら-->
        <a href="{{route('post.auth')}}"><img src="{{ asset('img/login.svg') }}" alt="ログイン"></a>
        <a href="{{route('register')}}"><img src="{{ asset('img/user.svg') }}" class="add" alt="ユーザー登録"></a>
        @endif
<!--中略-->
```
(注)` class="add" `に対して、このプロジェクトではcssでabsolute指定していますので、ログインアイコンクラスを変更するか、取るかしてください。ログアウトもログインに合わせてclassを取りました。
アイコンダウンロードサイト： https://www.ikonate.com/

4.ルーティング設定

```php:/routes/web.php
// Auth::routes(); // デフォルトのAuthルーティングコメントアウト

// Register周りのルーティング
Route::get('/auth/register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('/auth/register', 'Auth\RegisterController@register');
```
cf.LaravelのAuth認証機能をカスタマイズし意図した挙動へ変更するTips
https://www.ritolab.com/entry/86

5.デフォルトのバリデーションメッセージの変更

```php:/config/app.php
// 'locale' => 'en', // デフォルト
// 日本語に変更
'locale' => 'ja',
```
↓
/resources/langのディレクトリ内に「ja」フォルダ追加
↓
そのディレクトリ内に「/resources/lang/en/validation.php」のファイルをコピーする
↓
「/resources/lang/ja/validation.php」を編集する

```php:/resources/lang/ja/validation.php
    'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
        ],
        // 必要なカラムやバリデーションメッセージを追加・変更
        // ここで設定したメッセージがデフォルトの設定になります
        'name' => [
            'required' => 'アカウント名を入力してください',
        ],
        'email' => [
            'required' => 'メールアドレスを入力してください',
        ],
        'password' => [
            'required' => 'パスワードを入力してください',
        ],
    ],
```

以上でregister周りのカスタマイズ終了です。

# あとがき
今回、Laravelで投稿アプリの機能を初期構築レベルで汎用的につくれたらという思いで記事を投稿して参りました。また、脳死レベルで実装できるようにしたかったため、できる限り説明は省いています。
もし、気になったことがあったらご自身で調べてください。それがプログラミング上達へのコツだと思っています。

そして、この記事が少しでも開発のお役に立てていただければ幸いです。
今後も実装したものは、どんどん記事を公開していく予定ですので何卒よろしくお願いします。

Laravelで投稿アプリの機能を作成
~CRUD編~
https://qiita.com/ProgramingDai/items/cf6944f9cd0ac08f4e3e
~リレーション編~
https://qiita.com/ProgramingDai/items/249acc8894079ee58268
~ログインカスタマイズ編Ⅰ~
https://qiita.com/ProgramingDai/items/fee669e5a8cf67f0e38e
~ログインカスタマイズ編Ⅱ~
https://qiita.com/ProgramingDai/items/4fe2e3cc90987356c9c4
~新規登録画面編~
https://qiita.com/drafts/e5ec7d3325d7b544b749