FormRequestのrulesメソッド内でバリデーションルールを振り分ける

FormRequestのrulesメソッド内でバリデーションルールを振り分ける

Read in: en
FormRequestのrulesメソッド内でバリデーションルールを振り分ける

複数のフォームがある状況で、「フォームリクエストのクラスは一つに絞って、rulesメソッド内で分岐したい」なんて思う日があるかもしれません。(私はRest APIつくっているときにありました。)

案外同じことを考えている人がいたようで、リファレンス漁るよりも先に結果が出ました。

Multiple Forms, Multiple Requests?

FormRequestのrulesメソッド内でゴニョゴニョします。

/**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
  		if ($this->hogehoge) {
  			return [
  				'alias_name' => 'max:50|required|unique:users',
  			];
  		}

  		if ($this->mogemoge) {
  			return [
  				'self_introduction' => 'max:200'
  			];
  		}

  		// デフォルト
  		return [];
    }

hogehoge、mogemogeのところはそれぞれリクエストに渡される値です。(なんといえばいいのでしょうか汗)

$request->hogeって感じでリクエストの値を取得できますが、その$requestがフレームワークの実装でごにょごにょされて、$thisに代わったといった感じです。(代わったというのはかなり語弊がある気がしますが、裏側の実装を見ていないのでボキャ貧でごめんなさいということにしてください。。。)

1番最後のreturn []はnullがリクエストで渡ってきた時のためです。 これがないとnullの時エラーになります。

所感

特にありませぬ。

Tags: Laravel
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事