【发布时间】:2019-07-25 13:37:27
【问题描述】:
我使用 Laravel,我想编写优雅的验证规则 :) 使用这个框架真的很容易,但在面对 1:n 关系时我不知道如何处理。
我有两个资源,用户和联系人。一个用户可以有多个联系人。
所以,我想要一个表单,您可以在其中填写所有用户字段和所有联系人信息。 为此,我想写一个这样的请求:
用户请求:
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': 'user@mail.com'
'contacts': [
[
'email' => 'contac_1@mail.com',
'contact_type_id => 1
],
[
'email' => 'contac_2@mail.com',
'contact_type_id => 2
],
}
`
就是这样, 谢谢!
【问题讨论】:
-
请您展示您的表单示例以及用户如何添加其他联系方式,即使用 javascript 或单独的表单?
-
contacts.*.email可以工作 -
嗨!抱歉,我添加了我希望收到的已提交表单数据:P 我想对“联系人”输入数组应用验证。我可以保持验证模块化吗?让 UserRequest.php 尽可能简单,特别是在其他请求中重用相同的联系人验证
-
我不喜欢
contacts.*.email,因为这个验证会(而且已经很复杂了)contacts.*.email、contacts.*.contact_type_id、contact.*...等。而且,这个联系人验证会在多个资源中使用,所以,我将有重复的代码。这就是我想通过这种模块化尝试避免的......我喜欢使用单行,就像我的例子:D -
如何验证联系人数组是否包含不同的字段,例如。 email1,contact_type_id1,email2,contact_type_id2
标签: arrays laravel validation nested rules