如何使用laravel规则设置laravel自定义验证消息

Jav*_*ved 2 php laravel

让我先显示我的代码。这是我的控制器功能代码

public function save(Request $request) {
    try {
        $this->validate($request, Venue::rules()); // Validation  Rules 
        $venue = Venue::saveOrUpdate($request);
        if($venue !== false) {
            if($request->get('continue', false)) {
                return redirect()->route('admin.venue.edit', ['id' => $venue->id])->with('success', trans('admin.venue.save_success'));
            } else {
                return redirect()->route('admin.venue.index')->with('success', trans('admin.venue.save_success'));
            }
        } else {
            return back()->with('error', "Unable to save venue")->withInput();
        }

    } catch (\Exception $ex) {
        return back()->with('error', "Unable to save venue")->withInput();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的模型功能代码

public static function rules($id = '') {
    return [
        'name' => 'required|string|max:255',
        'logo' => 'required',
        'status' => 'required|string|in:' . implode(",", Venue::STATUSES),
        'venue_type_id' => 'required|string|not_in:0',
         'client_id' => 'required|string|not_in:0',
    ];
}
Run Code Online (Sandbox Code Playgroud)

所以现在当我提交表单验证显示消息时。我想更改此消息。我该怎么做。

让我显示带有验证消息的表单: 在此处输入图片说明

小智 8

您可以通过以下方式自定义验证消息,

前往 resources->lang->en->validation.php

在这里你看到,

'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
        ],
    ],
Run Code Online (Sandbox Code Playgroud)

根据您的需要编辑它们。


Dun*_*kun 6

这就是我处理这个问题的方法,可以作为指导。从您的表单中,您基本上有 4 个输入字段,假设它们被命名为name、client、logo 和venue_type。控制器中验证表单请求的函数如下所示:
注意 - 您应该放置 - 使用验证器;使用 Illuminate\Http\Request;- 在班上名列前茅

公共函数 validateFormRequest($request){
    尝试
    {

        //在这里指定您的自定义消息
        $消息= [
          'required' => ':attribute 字段为必填',
          'string' => ':属性必须是文本格式',
          'file' => ':属性必须是一个文件',
          'mimes' => ':attribute 支持的文件格式为 :mimes',
          'max' => ':attribute 的最大长度必须为 :max',
        ];


        $validator = Validator::make($request->all(), [
              '名称' => '必需|字符串|最大:75',
              '客户端' => '必需|字符串|最大:75',
              '徽标' => '必需|文件|mimes:jpeg,png,jpg,gif',
              'venue_type' => '必需|字符串',
          ], $messages);

        if($validator->失败()){
            // 验证失败..记录错误或将错误返回到视图/刀片
        } 别的{
            // 验证通过。返回 true 或肯定信息。即请求可以保存
        }

    }catch(异常$ex){
        //记录您的错误或将一些错误消息返回到您的视图/刀片
    }
}


Soh*_*415 5

您可以自定义error messages使用的form request通过重写messages()方法。messages在您的Venue课程上添加自定义,如下所示:

public static function messages($id = '') {
return [
    'name.required' => 'You must enter your name',
    'logo.required' => 'You must upload logo',
    'key.rules' => 'your messages'
];
Run Code Online (Sandbox Code Playgroud)

然后在您的控制器上添加messages第三个parameter赞-

$this->validate($request, Venue::rules(), Venue::messages());
Run Code Online (Sandbox Code Playgroud)