【问题标题】:Required If validation for Laravel array with empty value如果验证具有空值的 Laravel 数组,则需要
【发布时间】:2020-11-08 17:23:24
【问题描述】:

我有以下输入

{
    "password":"password",
    "environment_roles":[
        {
            "environment_id":"",
            "role_id":""
        }
    ],
    "admin":true    
}

并有一个具有以下规则的请求类:

 public function rules()
    {
        return [
            'password'                              => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/',
            'environment_roles'                     => 'array',
            'environment_roles.*.role_id'           => 'required_if:admin,false|exists:roles,role_id',
            'environment_roles.*.environment_id'    => 'required_if:admin,false|exists:environment,environment_id',
            'admin'                                 => 'sometimes'
        ];
    }

但如果我给出上述输入,它会显示以下验证错误,其中admintrue

"validation": {
            "environment_roles.0.role_id": [
                "The selected environment_roles.0.role_id is invalid."
            ],
            "environment_roles.0.environment_id": [
                "The selected environment_roles.0.environment_id is invalid."
            ]
        },

我该如何解决这个问题。当admin 的值为真时,我需要验证environment_roles.*.role_idenvironment_roles.*.environment_id

【问题讨论】:

  • 显示什么验证信息?
  • 您查看过exclude_ifexclude_unless 规则吗?

标签: php laravel request


【解决方案1】:

如果您总是发送 admin 属性,则将其设置为不需要的 null 会更合适。你可以试试:

public function rules()
{
    return [
        'password'                              => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/',
        'environment_roles'                     => 'array',
        'environment_roles.*.role_id'           => 'nullable|required_if:admin,false|exists:roles,role_id',
        'environment_roles.*.environment_id'    => 'nullable|required_if:admin,false|exists:environment,environment_id',
        'admin'                                 => 'bool|sometimes'
    ];
}

但是您的错误表明数据库中不存在角色和环境ID(存在规则)。将这两个字段设置为可为空意味着它不会触发存在规则。

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 2019-02-23
    • 2019-05-18
    • 2017-06-07
    • 2011-12-11
    • 1970-01-01
    • 2023-03-10
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多