2016-12-06 19 views
0

私は入力フォームを持っています。ここで、ユーザーは予約注文のアイテム詳細の数量を選択します。例:ジュリアの予約注文:飲み物 - 水1瓶、ミルク1杯、防弾コーヒー1杯。ララベル5.1。インデックス付き配列の検証

@foreach ($item->detail()->orderBy('sequence')->get() as $detail) 
<td><input name="estimate_quantity[]"></td> 
@endforeach 

私は自分の数量を検証したいと思います。ゼロより大きいかそれ以上の整数だけです。 だから私はルールを作った

public function rules() 
{ 
     $rules = [ 
      'estimate_quantity' => 'required|array', 
     ]; 
     $estimate_quantity = $this->request->get('estimate_quantity'); 
     foreach ($estimate_quantity as $index => $value){ 
      $rules["estimate_quantity.$index"] = 'integer|min:0'; 
     } 
     return $rules; 
} 

それは動作しません。アルファベットを入力した場合、エラーになります。

ErrorException in helpers.php line 468: 
htmlentities() expects parameter 1 to be string, array given 

1.この検証を行う正​​しい方法はありますか?コントローラーで作ってもいいとは思わない。

2.カスタムルールを別のファイルに作成すると、保存する方がよいでしょうか?アプリ/検証フォルダを作成しますか?

3.ルール実行後とコントローラメソッドの実行前に、どのような魔法が起こっていますか?

私はLaravelとプログラミングでもかなり新しいです。この簡単な質問には申し訳ありません。

+0

を動作するはず与えることができると思いますか? https://laravel.com/docs/5.3/validation#validation-quickstart –

+0

@Chonchol Mahmud私はそれを使用します。私は、コントローラ、https://laravel.com/docs/5.1/validation#form-request-validationとは別の検証ロジックを持っています。 – Nikita

答えて

0

私はあなたがLaravelのバリデータを使用していない理由を代わりに以下.表記を使用する配列インデックス表記の配列要素が

public function rules() 
{ 
     $rules = [ 
      'estimate_quantity' => 'required|array', 
     ]; 
     $estimate_quantity = $this->input('estimate_quantity'); 
     foreach ($estimate_quantity as $index => $value){ 
      $rules["estimate_quantity[".$index."]"] = 'integer|min:0'; 
     } 
     return $rules; 
} 
+0

あなたのメソッドは優れていますが、ErrorExceptionは発生しません。ありがとう!残念ながら、検証エラーは返されないので、コントローラのメソッドは評価されます。 – Nikita

関連する問題