如何在扩展(自定义)验证器类中动态更改验证错误消息

fthopkins

我创建了一个可能return有不同情况的自定义验证器类,所以我需要在每个这些之前设置自定义错误消息return

我创建了这个验证器类

class UserConfirmationMessageValidator extends Validator
{
   public function canPassTheMessageConfirmation($attribute, $value, $parameters, $validator){
        $confirmationKey = $validator->getData()["confirmationKey"];
        $phoneNumber = $validator->getData()["phone"];

        if(!isset($confirmationKey)){

            if(case1){
                // must set custom error message for this case
            }else { 
                // must set custom error message for this case
            }

            return false;

        }else {

            if(case2){

                return true;

            }else{
                // must set custom error message for this case
            }

        }

      // can return with message that define in (AppServiceProvider => boot), if any cases
      return false;

    }
}

这是我的 AppServiceProvider 类

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // some other validators

        Validator::extend('canPassTheMessageConfirmation', UserConfirmationMessageValidator::class."@canPassTheMessageConfirmation","you will receive sms. please wait");

    }

}

设置规则的我的控制器

public function store(Request $request) // kullanıcı kaydetme
{
    $validator = Validator::make($request->all(), [
        'area1' => 'unique:vp_users|required|min:8|max:16|canPassTheMessageConfirmation',
        'area2' => 'required|max:255',
        'area2' => 'required|max:255',
        'area4' => 'required|min:6|confirmed',
        'area5' => 'required|date_format:Y-m-d',
        'area6' => 'required|max:1',
    ]);

    if ($validator->fails()) {
        return response()->json($validator->errors()->first(),400); // Bad Request
    } else {
        $user = $this->create($request->all());
        return response()->json($user, $request->statusCode);
    }

}

验证器错误的转储输出var_dump($validator->errors());

object(Illuminate\Support\MessageBag)[246]
protected 'messages' => 
array (size=1)
  'area1' => 
    array (size=1)
      0 => string 'you will receive sms. please wait' (length=33)
protected 'format' => string ':message' (length=8)

当验证器因此canPassTheMessageConfirmation规则失败时validator返回一条消息:“您将收到短信。请稍候”,该消息已在AppServiceProvider boot函数中定义根据我的返回情况,我想在类的canPassTheMessageConfirmation方法中更改此消息UserConfirmationMessageValidator如果我的解释不清楚。我可以根据您的意愿分享更多代码。

fthopkins

我想我找到了在扩展Validator类中动态更改错误消息的方法并想分享。也许有人正在为这种定制而苦苦挣扎,请使用我的解决方案并感谢我。我注意到验证器对象有一个fallbackMessages数组,其中包含在类的boot方法上设置的自定义错误消息的参数AppServiceProvider您可以看到我如何在上述问题bootAppServiceProvider类的方法上设置自定义错误消息

验证器对象的示例输出

 public 'fallbackMessages' => 
 array (size=6)
 'are_they_friend' => string 'you must be friend to complete this action!' (length=43)
 'are_they_friend_with_all' => string 'all user you sent video must be your friend!' (length=44)
 'is_member_of_group' => string 'you must be the member of this group!' (length=37)
 'is_media_supported' => string 'this media type is not supported' (length=32)
 'can_refresh_media_list' => string 'that is all for now' (length=19)
 'can_pass_the_message_confirmation' => string 'you will receive sms. please wait' (length=33)

所以我得到fallbackMessages并与我修改后的自定义消息合并。

$validator->setFallBackMessages(array_replace($validator->fallbackMessages,["can_pass_the_message_confirmation" => "My Message"]));

验证器错误的转储输出var_dump($validator->errors());

object(Illuminate\Support\MessageBag)[246]
protected 'messages' => 
array (size=1)
  'area1' => 
    array (size=1)
      0 => string 'My Message' (length=10)
protected 'format' => string ':message' (length=8)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

扩展的自定义验证器类的Laravel错误消息

来自分类Dev

如何在自定义验证中更改默认的“ is_invalid错误”消息

来自分类Dev

如何在自定义验证中更改默认的“ is_invalid错误”消息

来自分类Dev

如何在Symfony的控制器中自定义验证错误消息

来自分类Dev

如何在自定义验证属性中访问viewmodel的属性值以更改消息?

来自分类Dev

如何在Yii 2验证错误消息中添加自定义链接?

来自分类Dev

动态更改CakePHP 3自定义验证规则消息

来自分类Dev

如何在FormRequest中添加自定义验证器?

来自分类Dev

Laravel扩展验证自定义消息

来自分类Dev

如何在自定义设置器中添加活动记录验证错误?

来自分类Dev

(Laravel)如何在自定义验证器中添加错误?

来自分类Dev

从Vue验证器构建自定义错误消息

来自分类Dev

如何自定义验证属性错误消息?

来自分类Dev

如何显示自定义验证错误消息

来自分类Dev

流利的验证:如何自定义错误请求消息格式?

来自分类Dev

Rails 4:从自定义验证器中的错误消息中删除属性名称

来自分类Dev

在错误消息中返回自定义验证方法参数

来自分类Dev

MVC5中的自定义验证错误消息

来自分类Dev

laravel中`requiredIf`验证的自定义错误消息

来自分类Dev

AngularJS异步验证器如何获取自定义错误消息以显示

来自分类Dev

AngularJS异步验证器如何获取自定义错误消息以显示

来自分类Dev

异步自定义验证器不起作用并在Angular 8中显示错误消息

来自分类Dev

如何在Laravel表单验证错误消息中提供自定义字段名称

来自分类Dev

Spring Boot如何在验证@PathVariable参数时返回自定义错误消息

来自分类Dev

如何在 jQuery 自定义验证器方法中格式化消息

来自分类Dev

在自定义验证器中获取实体类

来自分类Dev

Laravel中的自定义验证消息

来自分类Dev

如何自定义Django rest框架中的[未提供身份验证凭据]错误消息

来自分类Dev

在 Spring 5 中,如何自定义表单验证错误消息?

Related 相关文章

  1. 1

    扩展的自定义验证器类的Laravel错误消息

  2. 2

    如何在自定义验证中更改默认的“ is_invalid错误”消息

  3. 3

    如何在自定义验证中更改默认的“ is_invalid错误”消息

  4. 4

    如何在Symfony的控制器中自定义验证错误消息

  5. 5

    如何在自定义验证属性中访问viewmodel的属性值以更改消息?

  6. 6

    如何在Yii 2验证错误消息中添加自定义链接?

  7. 7

    动态更改CakePHP 3自定义验证规则消息

  8. 8

    如何在FormRequest中添加自定义验证器?

  9. 9

    Laravel扩展验证自定义消息

  10. 10

    如何在自定义设置器中添加活动记录验证错误?

  11. 11

    (Laravel)如何在自定义验证器中添加错误?

  12. 12

    从Vue验证器构建自定义错误消息

  13. 13

    如何自定义验证属性错误消息?

  14. 14

    如何显示自定义验证错误消息

  15. 15

    流利的验证:如何自定义错误请求消息格式?

  16. 16

    Rails 4:从自定义验证器中的错误消息中删除属性名称

  17. 17

    在错误消息中返回自定义验证方法参数

  18. 18

    MVC5中的自定义验证错误消息

  19. 19

    laravel中`requiredIf`验证的自定义错误消息

  20. 20

    AngularJS异步验证器如何获取自定义错误消息以显示

  21. 21

    AngularJS异步验证器如何获取自定义错误消息以显示

  22. 22

    异步自定义验证器不起作用并在Angular 8中显示错误消息

  23. 23

    如何在Laravel表单验证错误消息中提供自定义字段名称

  24. 24

    Spring Boot如何在验证@PathVariable参数时返回自定义错误消息

  25. 25

    如何在 jQuery 自定义验证器方法中格式化消息

  26. 26

    在自定义验证器中获取实体类

  27. 27

    Laravel中的自定义验证消息

  28. 28

    如何自定义Django rest框架中的[未提供身份验证凭据]错误消息

  29. 29

    在 Spring 5 中,如何自定义表单验证错误消息?

热门标签

归档