Laravel – ユーザー登録処理の流れ

登録フォーム表示

ルーティング定義

ルーティングファイルにAuth::routes();を記述することでユーザー認証関係のルーティングが自動設定される。その中には、以下の登録フォーム表示のルーティングも含まれている。

  • メソッド:GET
  • URL:register
  • アクション:Auth\RegisterController@showRegistrationForm
  • ルート名:register

アクション

RegisterControllerコントローラーはRegistersUsersトレイトを利用していて、その中でshowRegistrationFormアクションが定義されている。

RegistersUsersトレイトのshowRegistrationForm()アクションメソッドは以下の通りで、auth.registerビューをレンダリングしている。

auth.registerビューは初期状態では存在しないので、コマンドで生成するかカスタムで作成する必要がある

フォームからのPOSTと登録実行

ルーティング定義

ルーティングファイルへのAuth::routes();の記述によって、以下のルーティングも定義される。

  • メソッド:POST
  • URI:register
  • アクション:Auth\RegisterController@register

アクション

showRegistrationFormアクションと同じく、registerアクションもRegisterControllerでuseされるRegistersUsersトレイトで定義されている。

このアクションの動作は以下の通り。

  • マスアサインメント$request->all()のための$fillableapp\User.phpモデルで定義しておく
  • 入力されたフィールド群を検証するvalidator()メソッドで検証条件を定義
    • validator()RegistersUsersトレイトを利用する親元のRegisterControllersで定義
    • 戻り値のValidatorインスタンスのvalidate()メソッドで検証実行

  • RegistersUsersトレイトを利用する親元のRegisterControllercreate()メソッドを呼んでデータ作成
  • そのUserインスタンスを与えて登録済みのイベント発行

  • $this->registered()は登録確認のようだが、同じトレイトで空で定義されている
  • このため三項演算子のfalse側に書かれているredirect($this->redirectPath())returnの戻り値となる
  • redirectPath()RegistersUsersトレイトでさらにuseされたRedirectsUsersトレイトで定義されていて、
    • redirectTo()メソッドが定義されていれば実行
    • $redirectTo属性が定義されていればそこにリダイレクト
    • いずれでもなければ/homeにリダイレクト
  • 初期状態ではこのトレイトの親元RegisterController$redirectToが定義されているので、この内容(RouteServiceProvider::HOME)にリダイレクトされる

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です