我有一个模型Paper
。纸张可以具有不同的尺寸和颜色,但尺寸仅与某些颜色相关,等等。我有一个数据透视表设置,其中大小对应于颜色。我正在使用表单请求验证,我的模型与大小和颜色设置belongsToMany
关系。当我Paper:create
时,如果颜色和大小是基于该数据透视表的不匹配,我想发送错误。是否有内置的“Laravel方式”来实现这一点,还是应该在设置颜色和大小时循环使用数据透视表?
答案 0 :(得分: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