2017-12-26 1 views
0

Ich weiß, wie mehrere Kategorien zu validieren wie:Laravel Prüfungsregel für mehrere Kategorien und jede Kategorie haben mehrere Unterkategorien

'categories' => 'required|array', 
'categories.*' => 'required|exists:categories,id' 

Aber ich weiß nicht, wie Unterkategorien der einzelnen Kategorien zu validieren

@foreach($attributes as $attribute) 
    @if(count($attribute['properties']) > 0) 
    <div class="form-group"> 
     <label class="col-md-4 control-label">{{ $attribute['title']}} <span class="text-danger">*</span></label> 
     <div class="col-md-6"> 
      <select class="form-control {{($attribute['select_many'] == 1) ? 'mt-select2' : ''}} dynamic attribute_{{$loop->index}}" name="attribute[{{$attribute['id']}}][]" {{($attribute['select_many'] == 1) ? 'multiple' : ''}} required style="width: 100%"> 
       <option value="">Select</option> 
       @foreach ($attribute['properties'] as $key => $value) 
        <option value="{{$key}}" {{(in_array($key, (empty($propertiesSelected)) ? [] : array_unique($propertiesSelected[$attribute['id']]))) ? 'selected' : '' }}>{{$value}}</option> 
       @endforeach 
      </select> 
     </div> 
    </div> 
    @endif 
@endforeach 

Antwort

1

Soweit ich verstehe, was Sie benötigen, können Sie ein zusätzliches .field_name, so dass Ihr Code könnte zum Beispiel hinzufügen:

'categories.*.name' => 'required|exists:categories,id' 

Sie können auch auf Validator Doc verweisen, wenn Sie weitere Optionen benötigen, ist es sehr gut geschrieben.

+0

ich zwei dimensionales Array Zum Beispiel Kategorie ['Unterkategorien'] = [1, 2, 3] und Kategorie ['ID'] = 1 –

0

Sie haben eine custom validation rule hinzufügen möchten, hier ein Beispiel:

In Ihrem AppServiceProvider Klasse unter boot Methode:

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use Illuminate\Support\Facades\Validator; 

class AppServiceProvider extends ServiceProvider 
{ 

    public function boot() 
    { 

     // Extend laravel validation rules 
     Validator::extend('subcategories_exist', function ($attribute, $categories, $parameters, $validator) { 

      // $categories represent the incoming categories value from client 
      foreach ($categories as $subCategories) { 

       foreach ($subCategories as $category_id) { 

        // check category existence in database 
        return App\Category::where('id', $category_id)->count() === 1; 

       } 

      } 

     }); 
    } 

    ... 

} 

Controller:

'categories' => 'required|array|subcategories_exist', 
Verwandte Themen