最「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
您可能能夠在驗證中使用「存在」規則。 http://laravel.com/docs/5.1/validation#rule-exists。但是,我只是簡單地創建一個函數,它只是查詢數據透視表並檢查組合是否有效。 – Dave
您也可以在檢查請求後創建驗證掛鉤以檢查條件。檢查http://laravel.com/docs/5.1/validation#other-validation-approaches:驗證鉤後。可能有幫助。 –