【问题标题】:Display validation message Laravel 5.4显示验证消息 Laravel 5.4
【发布时间】:2017-08-08 03:08:38
【问题描述】:

我有这样的验证:

TitleRequest.php:

public function rules()
{
    return [
        'title_name_report' => 'required|min:2',
        'develop_code' => 'required',
    ];
}

public function messages()
{
    return [
        'title_name_report.required',
        'title_name_report.min',
        'develop_code.required'
    ];
}

Lang/vi/validation.php.

'title_name_report.required'=>"Please enter, :attribute !",
'title_name_report.min'=>"Min length is :attribute",
'develop_code.required'=>"Please enter :attribute !",

'custom' => [
    'attribute-name' => [
        'rule-name' => 'custom-message',
    ],
],

'attributes' => [],

views/title.blade.php

<input type="text" class="form-control" id="title_name_report" name="title_name_report" 
        value="{{old('title_name_report')}}">
    @if($errors->has('title_name_report'))
        <div class="error-text">
            {{$errors->first('title_name_report')}}
        </div>
    @endif

我有两个问题:

1. 如何准确显示错误消息,我有 2 条规则,但它始终显示第一个规则的消息。当我尝试输入 1 个字符时,它仍然显示所需的消息。

2.如何使用 langs 文件,这样我就不需要将消息放入请求文件中。

请帮助我,非常感谢!

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    你可以用这个来显示所有的验证错误:

    @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
    

    以这种格式将自定义验证消息放入resources/lang/xx/validation.php 文件中:

    'custom' => [
        'email' => [
            'required' => 'We need to know your e-mail address!',
        ],
    ],
    

    更多信息:https://laravel.com/docs/5.4/validation#custom-error-messages

    【讨论】:

    • 感谢您的支持,我按照您的指南进行操作,效果很好:)!
    • 祝你好运朋友
    【解决方案2】:
    1. 如何准确显示错误消息,我有 2 条规则,但它始终显示第一个规则的消息。当我尝试输入 1 个字符时,它仍会显示所需的消息。

    Laravel 只会按顺序验证您的输入。它不会返回 下一个规则的错误消息,直到它没有通过第一个。

    1. 如何使用 langs 文件,这样我就不需要将消息放入请求文件中。

    您可以找到本地化详细信息here。它在

    /resources/lang/en/validation.php

    如果你想改变验证消息tru请求文件,你应该像this那样做

    public function messages()
    {
        return [
            'title_name_report.required' => "Title is required.",
            'title_name_report.min'  => "Title should not less than 2.",
            'develop_code.required'  => "Code is required.",
        ];
    }   
    

    【讨论】:

    • Tks,但我尝试输入 1 个字符,我认为它通过了第一条规则(必需规则)。它没有显示第二条规则(最小规则)?
    • 你能注释掉 TitleRequest.php 中的 messages() 方法吗?让我们看看会发生什么
    • 我试过了,它奏效了:D 'title_name_report.required' => __('validation.corporate_master.title_name_report.required'),
    • 顺便说一句,感谢您的支持 :) !
    猜你喜欢
    • 2018-11-05
    • 2017-01-06
    • 1970-01-01
    • 2020-04-28
    • 2020-03-04
    • 2021-12-19
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多