gpt4 book ai didi

validation - Laravel 5 Form Request Attribute 漂亮的名字不适用于自定义验证器

转载 作者:行者123 更新时间:2023-12-03 11:21:34 24 4
gpt4 key购买 nike

在我的一个表单请求中,我有以下代码更改验证消息的输入字段的名称:

   public function attributes(){

return [
'title' => 'topic title',
'content' => 'post content'
];

}

现在我想添加自定义验证规则,所以我创建了一个自定义验证服务:

class Validation extends Validator{

public function validateFoo($attribute, $value, $parameters){

return $value == 'foo';

}

}

然后我创建了一个验证服务提供者并添加了这个启动方法:

public function boot(){

Validator::resolver(function($translator, $data, $rules, $messages)
{
return new Validation($translator, $data, $rules, $messages);
});

}

然后我将其添加到 app/config/app.php 中的提供程序数组中:

  'App\Providers\ValidationServiceProvider',

现在一切正常,我可以按预期在表单请求中使用我的自定义验证规则。问题是我之前为属性设置的漂亮名称恢复为它们的旧名称,而不是得到类似“帖子标题字段是必需的”之类的东西。我得到“需要标题字段”。如果我从 providers 数组中删除上面的条目,那么我会得到预期的好名字,但是我不能使用我的自定义验证规则。我知道我可以在语言文件中全局查看这些内容,但我宁愿这样做。有没有什么办法解决这一问题?谢谢!

更新

如果我只是将以下代码添加到 AppServiceProvider 类中,而不是执行上述操作,那么我将获得预期的属性名称,但我更愿意以第一种方式执行此操作,因为它更简洁:

public function boot()
{
\Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});
}

最佳答案

如果您不想为此目的使用您的 resources/lang/en/validation.php 文件,您可以将 ValidationServiceProvider 的启动函数更改为

    public function boot()
{
Validator::resolver(function($translator, $data, $rules, $messages, $attributes)
{
return new ValidatorExtended($translator, $data, $rules, $messages, $attributes);
});
}

请注意,我添加了额外的 $attributes 参数。然后您可以像以前一样在 FormRequest 类中设置“漂亮”的名称。

   public function attributes(){

return [
'title' => 'topic title',
'content' => 'post content'
];

}

关于validation - Laravel 5 Form Request Attribute 漂亮的名字不适用于自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29882828/

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