问题描述
这是我的一部分代码,用于验证表单输入:
public function saveData(Request $request){
$form_data = $request->all();
$validation_fields = [
'first_name' => 'required','last_name' => 'required','cod_fisc' => 'sometimes|required|size:16','p_iva' => 'sometimes|required|between:11,13'
];
$errorMsgs = [
'first_name.required' => 'Il campo Nome è obbligatorio.','last_name.required' => 'Il campo Cognome/Ragione sociale è obbligatorio.','cod_fisc.required' => 'Il campo Codice Fiscale deve contenere 16 caratteri','p_iva.required' => 'Il campo Partita Iva deve contenere 11 o 13 caratteri',];
$validator = Validator::make($form_data,$validation_fields,$errorMsgs);
....
}
整个项目都是为意大利人编写的,因此所有消息都必须使用意大利语。
一切正常,但是cod_fisc
和p_iva
的两个规则绑定到“有时”规则,以英语显示。我的自定义错误消息将被忽略。
为什么?
解决方法
在搜索您的问题时,我已找到以下链接:https://laracasts.com/discuss/channels/laravel/sometimes-validator-with-custom-message
其中包含类似的问题。最初的代码是
$v = Validator::make(
$request->all(),[ 'first_name' => 'required|max:60'],['first_name.required' => 'First name is really required,yo']
);
$v->sometimes('last_name','required|in:fake',function($input){
return true;
});
解决方案是
$v = Validator::make(
$request->all(),yo'],['last_name.in' => 'Last name must be fake,too']
);
$v->sometimes('last_name',function($input){
return true;
});
显然,您可以根据sometimes
的结果调用function
Validator::make
并传递字段名称,验证者签名和布尔值function
。