2015-05-16 37 views
6

yüzden onun dinamik alanına eklediği tahmin edebilirsiniz ... görünümündelaravel 5 Çoklu Alanlar Doğrulama

<div> 
 
    <input type="text" name="new[0][description]" id="description-new-0"> 
 
    <input type="text" name="new[0][amount]" id="amount-new-0"> 
 
</div> 
 

 
<div> 
 
    <input type="text" name="new[1][description]" id="description-new-1"> 
 
    <input type="text" name="new[1][amount]" id="amount-new-1"> 
 
</div>

ve benzeri gibi gitmek şey bir alan form ekle düğmesini veya her neyi işaretlediğinizde.

Bu dinamik alanları nasıl GEÇERLİ OLABİLİR ve her alan için doğru hatayı nasıl döndürürüm?

Teşekkürler!

Not: Bu Laravel 5'dir, ancak buna benzer bir Laravel 4 çözümünüz varsa, sanırım işe yarayacaktır.

Teşekkürler çocuklar!

<?php 
use Illuminate\Foundation\Http\FormRequest; 

class MultipleRequest extends FormRequest 
{ 

    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     $rules = [ 
      'description' => 'required|array', 
     ]; 

     if ($this->request->get('description')) { 
      foreach($this->request->get('description') as $key => $val) 
      { 
       $rules['description.'.$key] = 'required|min:7'; //example 
      } 
     } 

     return $rules; 
    } 


    public function messages() 
    { 
     $messages = []; 
     if ($this->request->get('description')) { 
      foreach ($this->request->get('description') as $key => $val) { 
       $messages['description.' . $key . '.min'] = 'Wrong field.'; 
       $messages['description.' . $key . '.required'] = 'This field required.'; 
      } 
     } 
     return $messages; 
    } 
} 

fazla bilgi gibi bu form için klasör İstekler doğrulayıcıda

+0

Sen değerleme sırasında iç içe dizi öğelere erişmek için nokta işaretini kullanmak, böylece new.description' 'için kurallar oluşturmak mümkün olmalıdır ve' n ew.amount' – Azeame

cevap

6

oluşturmak How To: Validate an array of form fields with Laravel sonraki

@if (Session::has('_old_input')) 
     @for ($i=0; $i<count(Session::get('_old_input.description')); $i++) 
      <div> 
       @if($errors->any() && Session::get('errors')->getBag('default')->has('description.' . $i)) 
        <p class="">{{Session::get('errors')->getBag('default')->first('description.' . $i)}}</p> 
       @endif 


       <input type="text" name="new[][description]" id="description-new-{{$i}}" value="{{Session::get('_old_input.description.' . $i)}}"> 
       <input type="text" name="new[][amount]" id="amount-new-{{$i}}" value="{{Session::get('_old_input.amount.' . $i)}}"> 
      </div> 
     @endfor 
    @endif 

nedenle her blok için hata mesajı ile bloğunu eklerim sonra görünümünde

girişleri ile. Benim örnekte sadece açıklama işlenen yapabilirsiniz miktar için benzer bir açıklama işlenen benim çalıştığını ve benziyorsun enter image description here

UPD: laravel sürüm 5.2 istek doğrulayıcı oluşturabilir böylece dizi doğrulama var gibi:

public function rules() 
{ 
    return [ 
     'names.*' => 'required|max:50', 
     'emails.*' => 'required|max:100', 
    ]; 
} 
daha fazla bilgi için

DOC okumak