2017年2月14日火曜日

Laravel5.4で配列のバリデーション

Laravel5.4で、配列のバリデーションです。ショッピングカートなどで、商品数が増減し、すべての商品に入力チェックをかけたい場合などに有効です。最初はなんだかよくわかりませんでしたが、ちょっと慣れると、どんなものでもチェックできそうな気になります(笑)。

フォームのリクエストクラスを作成
$ php artisan make:request OrderRequest
/app/Http/Requests/OrderRequest.php
use App\Http\Requests\Request;

  public function rules()
  {
    // 名前とメールアドレスのチェック
    $rules = [
      'name' => 'required',
      'email' => 'required|email',
    ];

    // 選択された商品の入力チェック
    foreach($this->reitem->get('item') as $key => $val)
    {
      $rules['item_quantity.'.$key] = 'required';
      $rules['item_size.'.$key] = 'required';
      $rules['item_color.'.$key] = 'required';
    }
    return $rules;
  }

  // エラーメッセージの設定
  public function messages()
  {
    $messages = [];
    foreach($this->reitem->get('item') as $key => $val)
    {
      $messages['item_quantity.'.$key.'.required'] = '商品'.$key.'の数を入力してください';
      $messages['item_size.'.$key.'.required'] = '商品'.$key.'のサイズを選択してください';
      $messages['item_color.'.$key.'.required'] = '商品'.$key.'の色を選択してください';
    }
    return $messages;
  }

参考サイト
Validation(Laravel)
Validate an array of form fields with Laravel(Eric L. Barnesさん)

0 件のコメント:

コメントを投稿