2015-11-13 2 views
0

У меня есть модель Paper. Бумага может иметь разные размеры и цвета, но размеры относятся только к некоторым цветам и так далее. У меня есть сводная таблица, где размеры соответствуют цветам. Я использую проверку запроса формы, и у меня есть модели с отношениями belongsToMany, настроенными для размеров и цветов. Когда я делаю Paper:create Я хочу отправить сообщение об ошибке, если цвет и размер являются несоответствиями на основе этой сводной таблицы. Есть ли встроенный способ «Laravel» для достижения этого или я должен просто прокручивать сводную таблицу, когда установлены цвет и размер?Проверка валидатора с помощью сводной таблицы

+2

Возможно, вы можете использовать правило «существует» в валидации. http://laravel.com/docs/5.1/validation#rule-exists. Однако я бы просто создал функцию, которая просто запрашивает сводную таблицу и проверяет, действительно ли комбинация действительна. – Dave

+1

Также вы можете создать после проверки, чтобы проверить условия после проверки вашего запроса. Проверьте http://laravel.com/docs/5.1/validation#other-validation-approaches: После проверки. Может помочь. –

ответ

0

Самый путь «Laravely», что я могу думать, использует класс запроса формы, как так:

<?php 

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class PaperFormRequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     // rules here 
    } 

    protected function getValidatorInstance() 
    { 
     $validator = parent::getValidatorInstance(); 

     $validator->after(function() use ($validator) { 


      // logic for detecting mismatches goes here 


      // To add validation-errors, simply do: 
      $validator->errors()->add(
       'colorMistmatch', 
       'This color does not go with this paper' 
      ); 

      return $validator; 
     } 
    } 
} 

После того, как ошибки, которые были добавлены к считывающему инстанции, вы можете отобразить их в лезвии -отчеты:

@if ($errors->has('colorMistmach')) 
    {{ $errors->first('colorMistmach') }} 
@endif 
Смежные вопросы