Laravel自定义消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel自定义消息相关的知识,希望对你有一定的参考价值。

嗨我正在使用laravel进行自定义验证我是新的,现在我的控制器代码提到这是我如何验证上传文件。一切正常,但我有问题在视图页面显示自定义消息它显示默认消息而不是我的自定义消息请看看,让我知道我做错了什么。

$this->validate(
          $request, [
            'project_file.*' => 'required|size:2048',
            ],
            [
               'project_file.required' => 'Upload File Field Is Required',
               'project_file.max' => 'Upload File Field Must Be 2MB',
            ]
        );
        $messages = [
        'required' => 'The File should not be more then 2Mb',
        'size'    => 'The must be exactly Mb.',
        ];
        $validator = Validator::make($input, $rules, $messages);

        if($validator->fails()) {
          return Redirect::back()->withErrors($validator);
        }

我的View代码显示错误是:

@if ($errors->any())
  <div class="alert alert-danger">
  <strong>{!! implode('', $errors->all('<div>:message</div>')) !!}</strong>
</div>

@endif
答案

我觉得问题可能是因为您没有在messages数组中传递字段名称占位符。

您可以添加custom error messages进行验证。您可以传递第三个参数Validator::make方法。

$messages = [ 'required' => 'The :field should not be more then 2Mb' ];

$validator = Validator::make($input, $rules, $messages);

:field占位符将被字段名称替换

仅使用点操作为特定字段添加自定义错误消息

$messages = [
    'file.required' => 'The image should not be more then 2Mb',
];

希望这可以帮助。

另一答案

最好不要在控制器中编写验证逻辑,因为它会导致胖控制器和非常混乱的控制器,因此您可以使用单独的请求类以更好的方式执行。

首先,在控制台中使用以下命令来创建这样的自定义验证请求类,

php artisan make:request PostRequest

现在,将在该文件的PostRequest.php中创建一个名为app/Http/Requests/的文件,您应该进行如下验证。

<?php

namespace AppHttpRequests;

use IlluminateFoundationHttpFormRequest;

class PostRequest extends FormRequest
{
/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        //
       'project_file.*' => 'required|max:2048',
    ];
}

public function messages()
{
    return [
      'required' => 'Upload File Field Is Required',
      'max'     => 'The File should not be more then 2Mb',
    ];
}
}

现在,传递哪种表单请求的函数你必须像这样更改Request to PostRequest,以便自动执行验证。

public function post(PostRequest $request){
   //
}

以上是关于Laravel自定义消息的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段

如何自定义 laravel 数组验证错误键和消息

Laravel 5.4 - 如何为同一个自定义验证规则使用多个错误消息

提交数据Laravel后的自定义错误消息

php [Laravel - 自定义错误消息] Laravel 5.4其他登录条件 - 添加自定义错误消息。 #All #Script #Laravel #Php

Laravel 验证自定义消息