Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何在FormRequest中使用自定义验证?_Laravel_Laravel 5 - Fatal编程技术网

Laravel 如何在FormRequest中使用自定义验证?

Laravel 如何在FormRequest中使用自定义验证?,laravel,laravel-5,Laravel,Laravel 5,我有课: 类CreateInvoiceRequest扩展了FormRequest { 公共功能信息() { 返回[ “名称”=>“必需|字符串”, “代码”=>“必需”|字符串|唯一:企业发票,代码”, ]; } 公共职能规则() { 返回[ “名称”=>“必需|字符串”, “代码”=>“必需”|字符串|唯一:企业发票,代码”, ]; } } 还有一个自定义验证类: namespace-App\Rules; 使用照明\合同\验证\规则; 类InvoiceCode实现规则 { 公共函数传递($a

我有课:

类CreateInvoiceRequest扩展了FormRequest
{
公共功能信息()
{
返回[
“名称”=>“必需|字符串”,
“代码”=>“必需”|字符串|唯一:企业发票,代码”,
];
}
公共职能规则()
{
返回[
“名称”=>“必需|字符串”,
“代码”=>“必需”|字符串|唯一:企业发票,代码”,
];
}
}
还有一个自定义验证类:

namespace-App\Rules;
使用照明\合同\验证\规则;
类InvoiceCode实现规则
{
公共函数传递($attribute,$value)
{
//
}
/**
*获取验证错误消息。
*
*@返回字符串
*/
公共功能消息()
{
返回“发票代码应采用格式”;
}
}
如何为内部验证程序应用
InvoiceCode
规则:

公共功能规则()
{
返回[
“名称”=>“必需|字符串”,
“代码”=>“必需”|字符串|唯一:企业发票,代码”,
];
}
我试过这个:

 return [
                    'name' => 'required|string',
                    'code' => 'required|string|unique: enterprise_invoces,code',
                    'code' => new InvoiceCode()
                ];

在上一个代码段中,规则数组中有重复的键

要使用内置规则定义自定义规则,可以传入数组而不是字符串,如下所示:

return [
    'name' => 'required|string',
    'code' => ['required', 'string', 'unique: enterprise_invoces,code', new InvoiceCode()],
];

这里记录了这一点:

首先,FormRequest类上的messages方法不正确。如果要覆盖默认消息,语法应为:

公共功能消息()
{
返回[
'name.required'=>'名称是必需的。',
'name.string'=>'名称应为字符串',
//继续添加要覆盖的规则的消息
];
}
对于rules方法,当一个属性有多个规则时,通常使用数组,以使其更易于阅读,并且如果需要包含更复杂的逻辑。应该是这样的


公共职能规则()
{
返回[
“名称”=>“必需|字符串”,
“代码”=>[
“必需”,
'字符串',
'唯一:企业发票,代码',//您在代码中拼错了企业发票
新发票代码
],
];
}

谢谢,为什么我传递了错误的参数名称并得到了此常见错误
给定的数据无效。
而不是我自己的数据?谢谢,如何设置
新发票代码的消息
?您在规则类的消息方法中包含自定义消息是正确的。您缺少“passs”方法中的逻辑,但我假设您正在项目中填充它。