带有“有时”规则的Laravel Validator自定义消息

问题描述

这是我的一部分代码,用于验证表单输入:

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_fiscp_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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...