【问题标题】:Laravel before/after validation messageLaravel 验证消息之前/之后
【发布时间】:2016-10-21 01:39:21
【问题描述】:

在 Laravel 中,您可以为验证器创建自定义消息。但是我发现准备好的消息有点错误。使用beforeafter 验证规则,参数转换为strtotime,就像documentation 中所说的那样。

因此,如果我设置规则'expires' => 'before:+1 year',则该规则有效且正确。但是如果用户输入了错误的值,Laravel 会打印这样的消息:

到期日期必须是 +1 年前的日期

对于普通客户而言,此消息非常不清楚。我预计该消息也将使用strtotime 进行转换。

有没有一种简洁的方法可以打印更清晰的错误信息?

【问题讨论】:

    标签: validation laravel laravel-5 laravel-5.2


    【解决方案1】:

    您可以根据需要使用自定义消息覆盖验证消息。

    在表单请求类中,添加以下方法并更改消息如下:

    public function messages()
    {
        return [
            // 'fieldname.rulename' => 'Custom message goes here.'
            'email.required' => 'Er, you forgot your email address!',
            'email.unique' => 'Email already taken m8',
        ];
    }
    

    更新:

    如果要更改全局消息,可以打开resources/lang/en/validation.php 中的validation.php 文件并在那里编辑消息。

    【讨论】:

    • 但不是为每个验证器都这样做,我可以默认为之后/之前的规则这样做吗?
    • 是的,我不明白为什么不这样做,这些只是为您提供想法的示例。只需更改字段名称和规则名称即可。
    • 我明白这一点,但我有很多带有beforeafter 的验证器,我不想手动更改它们......
    • foreach 循环怎么样?
    • 我不明白 foreach 循环将如何帮助我。我在不同的课程中有很多验证者。我想更改afterbefore 消息,以便使用strtotime 计算它们,并且我想在全球范围内进行。
    【解决方案2】:

    您可以使用 AppServiceProvider.php
    您可以在那里编写新的验证规则并在 validation.php 文件中设置错误消息
    /app/Providers/AppServiceProvider.php
    /resources/lang/en/validation.php

    例如:

        Validator::extend('before_equal', function ($attribute, $value, $parameters) {
            return strtotime(Input::get($parameters[0])) >= strtotime($value);
        });
    

    消息是

        'before_equal' => 'The :attribute field is only accept date format before or equal to end date',        
    

    请试试这个,你可以根据你的需要改变这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      相关资源
      最近更新 更多