gpt4 book ai didi

php - Laravel 5.1 - 自定义验证语言文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:37:12 24 4
gpt4 key购买 nike

是否可以有条件地为验证请求设置自定义语言文件(例如 resources/lang/en/validation_ajax.php)?明确一点,我不想更改应用程序语言,只是根据请求来源使用另一组消息。

当我进行 ajax 验证调用时,我想使用不同的消息,因为我在字段本身下方显示了错误消息。因此无需再次显示字段名称(标签)。

我知道您可以在 'attributes' => [] 上定义标签,但这不值得付出努力,因为我有很多不同语言的字段。

我正在使用 FormRequest( Controller 上没有手动调用,只有类型提示)。

最佳答案

您可以针对特定请求(比如登录请求)覆盖 messages() 方法。让我告诉你:首先,你需要创建一个新的自定义表单请求,在这里我们将为 email.required 规则定义一个自定义消息:

<?php namespace App\MyPackage\Requests;

use App\Http\Requests\Request;

class LoginRequest extends Request {

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

public function messages()
{
return [
'email.required' => 'how about the email?',
];
}


/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => ['required', 'email'],
'password' => ['required', 'confirmed']
];
}
}

Only email.required rule message will be override. For password it will display the default message set at validation.php file.

现在,像类型提示一样在 Controller 函数中应用表单请求:

class LoginController{

public function validateCredentials(LoginRequest $request){
// do tasks here if rules were success
}
}

仅此而已。如果您需要创建自定义包并且想要添加/编辑验证消息,则 messages() 方法很有用。

更新

如果您需要将消息包放入包的 lang 文件中,那么您可以进行以下更改:

  1. 在您的包中创建您的自定义语言文件:

    MyPackage/resources/lang/en/validation.php
  2. 添加与 project/resources/lang/en/validation.php 文件保持相同数组结构的消息:

    <?php
    return [
    'email' => [
    'required' => 'how about the email?',
    'email' => 'how about the email format?',
    ],
    ];
  3. 最后,在您的 messages() 方法中分别调用您的包的 lang 行:

    public function messages(){
    return [
    'email.required' => trans('myPackage::validation.email.required'),
    'email.emial' => trans('myPackage::validation.email.valid'),
    ];
    }

关于php - Laravel 5.1 - 自定义验证语言文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com