9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel 配列で渡されたリクエストデータにバリデーションをかける

Last updated at Posted at 2015-06-21

リクエストデータを配列で渡せることを知って、「DBと対応していないフィールドを作る必要がなくなる!!」と思った矢先に「配列のデータに対するvalidationのかけ方が分からない!!」という問題にぶつかりました。

なかなか有益な情報が得られず困っていましたが、英語で検索してみるとすぐに見つかりました。
やはり日本語に固執しすぎるのは良くありませんね。

リクエストデータを配列で渡す

まずは、配列で渡したいフィールドを配列の形で書きます。
(この時 "user_name['last']"のように記述するとvalidationが効かなくなります。)

form.blade.php

<div class="form-group row">
    {!! Form::label('user_name[last]', '氏名(性):', ['class' => 'control-label']) !!}
    {!! Form::text('user_name[last]', null, ['class' => 'form-control', 'placeholder' => 'Last Name']) !!}
</div>

<div class="form-group row">
    {!! Form::label('user_name[first]', '氏名(名):', ['class' => 'control-label']) !!}
    {!! Form::text('user_name[first]', null, ['class' => 'form-control', 'placeholder' => 'First Name']) !!}
</div>


配列のバリデーション

配列名.キー名を指定するだけで配列のバリューにバリデーションをかけることができます。

CreateUserRequest.php


class CreateUserRequest extends Request {

    public function authorize()
    {
        return true;
    }
    
    public function rules()
    {
        return [
            'email'           => 'required|email',
            'user_name.last'  => 'required|max:32',
            'user_name.first' => 'required|max:32',
            'gender'          => 'required',
            'password'        => 'required|between:6,12|confirmed'
        ];
    }
    
}    

まとめ

前回の投稿にも書きましたが、ユーザ名の性と名や、範囲の始点と終点など、複数のフィールドが必要だけど、実際にDBに登録するのはひとつのカラムで十分と言った場合、配列を使った方がデータを処理しやすくなります。

配列へのバリデーションは、公式ドキュメントには載っていなく?あまり日本語のドキュメントでヒットしない内容ですが、フィールドを配列で記述することで、扱いやすいデータもあると思います。そんな時にバリーデーションは必ず、使用するので知っていてそんはない知識だと思います。

謝辞

最後まで読んでいただき、まことにありがとうございます。
次の投稿では他フィールドの値をあるフィールドのバリデーションで使用することについて投稿したいと思います。

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?