Arrays 验证数组中的Laravel嵌套规则
我和Laravel在一起,我想编写优雅的验证规则:)使用这个框架真的很容易,但我不知道在面对1:n关系时如何处理这个问题 我有两个资源,用户和联系人。一个用户可以有多个联系人 所以,我想要一个表格,您可以填写所有用户字段和所有联系人信息。 为此,我想写一个这样的请求:Arrays 验证数组中的Laravel嵌套规则,arrays,laravel,validation,nested,rules,Arrays,Laravel,Validation,Nested,Rules,我和Laravel在一起,我想编写优雅的验证规则:)使用这个框架真的很容易,但我不知道在面对1:n关系时如何处理这个问题 我有两个资源,用户和联系人。一个用户可以有多个联系人 所以,我想要一个表格,您可以填写所有用户字段和所有联系人信息。 为此,我想写一个这样的请求: ` // POST: users { 'name': 'UserName', 'email': 'user@mail.com' 'contacts': [
` // POST: users
{
'name': 'UserName',
'email': 'user@mail.com'
'contacts': [
[
'email' => 'contac_1@mail.com',
'contact_type_id => 1
],
[
'email' => 'contac_2@mail.com',
'contact_type_id => 2
],
}
`
用户请求:
public function rules()
return [
'name' => 'required|string',
'email' => 'required|email|unique:exists:users,id',
'contacts' => 'array',
'contacts.*' => new ContactRequest() // This is the problem
]
我的问题是:如何应用这种类型的验证?特别是在使用数组时,如何进行模块化验证以应用嵌套资源的验证?还是我应该制定一个联系规则
编辑:
我希望前端发送表单如下所示:
` // POST: users
{
'name': 'UserName',
'email': 'user@mail.com'
'contacts': [
[
'email' => 'contac_1@mail.com',
'contact_type_id => 1
],
[
'email' => 'contac_2@mail.com',
'contact_type_id => 2
],
}
`
仅此而已,
谢谢 我们有一个API,每个请求或post/补丁都有100个结果。 我们仍然使用:
'data.relationships.users.data.*.id' => [
'string',
'unique:api_groups,name,' . ($this->route('group')->id ?? 0),
]
那你呢
'contacts.*.email' => 'required|email|unique:exists:users,id'
工作完美。它不会变得更复杂或更复杂。请您展示一个表单示例,以及用户如何使用javascript或单独的表单添加其他联系人详细信息?
contacts.*。电子邮件将非常有用!抱歉,我添加了希望接收的汇总表单数据:P我希望对“联系人”输入数组应用验证。我可以保持验证模块化吗?要使UserRequest.php尽可能简单,尤其是在其他请求中重复使用相同的联系人验证,我不喜欢联系人。*.email
,因为此验证将(而且已经更复杂),联系人。*.email
,联系人。*.Contact\u type\u id
,联系人。*…
,等等,此联系人验证将在多个资源中使用,因此,我将有重复的代码。这就是我想要避免的模块化尝试。。。我希望使用一行代码,比如我的示例:如何验证联系人数组是否包含不同的字段,例如email1、contact_type_id1、email2、contact_type_ID2当它是一个或两个简单字段时很好,但想象一下当它变大时会怎样。例如,5个字段,联系人。*.email
,联系人。*.field_2
,联系人。*.field_3
,联系人。*.field_4
,联系人。*.field_5
,等等。。此外,这将在多个端点中使用(不仅在用户端点、Model2、Model3等中)。将会有很多重复的代码:(不,没有重复的代码,因为您使用表单请求。公共函数storeUser(StoreBlogPost$request){//Do stuff}公共函数storeModel2(StoreBlogPost$request){//Do stuff}