在Array中验证Laravel嵌套规则

问题描述 投票:1回答:1

我和Laravel在一起,我想编写优雅的验证规则:)使用这个框架非常简单,但我不知道在面对1:n关系时如何处理这个问题。

我有两个资源,用户和联系人。用户可以拥有多个联系人。

所以,我想要一个表格,您可以填写所有用户的字段和所有联系人的信息。为此,我想写一个这样的请求:

UserRequest:

public function rules()
    return [
        'name' => 'required|string',
        'email' => 'required|email|unique:exists:users,id',
        'contacts' => 'array',
        'contacts.*' => new ContactRequest() // This is the problem
    ]

我的问题是:我如何应用这种类型的验证?特别是在使用数组时,如何进行模块化验证以应用嵌套资源的验证?或者我应该开发一个ContactRule?

编辑:

我希望前端发送这样的形式:

` // POST: users
    {
        'name': 'UserName',
        'email': '[email protected]'
        'contacts': [
            [
                'email' => '[email protected]',
                'contact_type_id => 1
            ],
                        [
                'email' => '[email protected]',
                'contact_type_id => 2
            ],

    }
`

多数民众赞成,Thx!

arrays laravel validation nested rules
1个回答
1
投票

我们在每个请求或者发布/补丁中都有一个包含100个结果的API。我们仍然使用:

'data.relationships.users.data.*.id' => [
    'string',
    'unique:api_groups,name,' . ($this->route('group')->id ?? 0),
]

所以对你来说

'contacts.*.email' => 'required|email|unique:exists:users,id'

完美的工作。它没有变得更复杂或任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.