是否可以有条件地为验证请求设置自定义语言文件(例如resources / lang / en / validation_ajax.PHP)?明确地说,我不想更改应用程序语言,仅根据请求的来源使用另一组消息.
当我进行ajax验证呼叫时,由于要在字段本身下方显示错误消息,因此我想使用其他消息.因此,无需再次显示字段名称(标签).
我知道您可以在’attributes’=>上定义标签[]但不值得付出努力,因为我有多种语言的众多领域.
我正在使用FormRequest(在Controller上没有手动调用,只是一个类型提示).
解决方法:
您可以覆盖特定请求(例如登录请求)的messages()方法.让我向您展示:首先,您需要创建一个新的自定义表单请求,这里我们将为email.custom规则定义一条自定义消息:
<?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 atvalidation.PHP
file.
class LoginController{
public function validateCredentials(LoginRequest $request){
// do tasks here if rules were success
}
}
仅此而已.如果需要创建自定义程序包,并且要添加/编辑验证消息,则messages()方法很有用.
更新资料
如果您需要将消息包携带到包的lang文件中,则可以进行以下更改:
MyPackage/resources/lang/en/validation.PHP
>添加与project / resources / lang / en / validation.PHP文件保持相同数组结构的消息:
<?PHP
return [
'email' => [
'required' => 'how about the email?',
'email' => 'how about the email format?',
],
];
>最后,在您的messages()方法中分别调用包的lang行:
public function messages(){
return [
'email.required' => trans('myPackage::validation.email.required'),
'email.emial' => trans('myPackage::validation.email.valid'),
];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。