【问题标题】:Laravel Validator custom message with "sometimes" rule带有“有时”规则的 Laravel Validator 自定义消息
【发布时间】:2020-12-13 21:20:29
【问题描述】:

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

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 的两条规则绑定到“有时”规则,以英文显示。我的自定义错误消息被忽略了。

为什么?

【问题讨论】:

  • 对我来说它看起来像一个 Laravel 错误。

标签: php laravel laravel-7 laravel-validation


【解决方案1】:

搜索您的问题我发现了这个链接: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(),
                    [ 'first_name' => 'required|max:60'],
                    ['first_name.required' => 'First name is really required, yo'],
                    ['last_name.in' => 'Last name must be fake, too']
);

$v->sometimes('last_name', 'required|in:fake', function($input){
                    return true;
});

显然您可以在Validator::make 的结果上调用sometimes function 并传递字段名称、验证器签名和布尔值function

【讨论】:

  • 我试过了,不适合我。我发现在资源中更改标准翻译文件更容易。 /resources/lang/en/validation.php
  • @SimoneConti 问题在于,无论何时升级框架版本,您都需要牢记这一点。
  • 也许你是对的,但我不打算很快升级 Laravel。另外,其他解决方案似乎对我不起作用。也许我会再试一次。
  • @SimoneConti 我理解你的观点,我提出的解决方案对你来说不可行。出了点问题,我们不知道是什么。但是,如果我是你,在找到非 hacky 解决方案之前,我不会关闭这个案例。不一定是这个。例如,您可以写信给 Laravel 论坛,或向他们发送消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2023-03-20
相关资源
最近更新 更多