我有一张桌子,用户可以在其中填写信息。但是,用户可以添加行和/或删除行。我使用了克隆功能。
我的HTML看起来像:
<input type="text" class="form-control" name="TB1_a[]">
<input type="text" class="form-control" name="TB1_b[]">
如您所见,它是一个数组输入。因此,如果用户添加一行,我将在TB1_a []和TB1_b中存储两个值。 现在,我想制定我的规则,以便如果用户在TB1_a [0]内输入信息,我想要TB1_b [0],但是如果两者 TB1_a [0]和TB1_b则有效[0]是空的。
我的验证规则:
'TB1_a.*' => 'required_with:TB1_b.*',
'TB1_b.*' => 'required_with:TB1_a.*'
但是,这些规则无法检测到我指的是数组,这意味着Laravel没有检测到&#39;。*&#39;。我还想指出,这个逻辑与Laravel 5.4完美配合,但我不得不降级我的Laravel,现在它停止工作了。有什么帮助吗?
答案 0 :(得分:2)
据我所知,这个[.*
]符号是在Laravel 5.2+中引入的。因此,要实现数组验证,您需要添加自定义规则。 Reference Link
public function rules()
{
$rules = [
'name' => 'required|max:255',//add more static rules as you need
];
foreach($this->request->get('TB1_a') as $key => $val)
{
$rules['TB1_a.'.$key] = 'required_with:TB1_b.'.$key;
}
foreach($this->request->get('TB1_b') as $key => $val)
{
$rules['TB1_b.'.$key] = 'required_with:TB1_a.'.$key;
}
/*
To combine the both validation rules in 1 loop. considering number of both fields are always equal
foreach($this->request->get('TB1_a') as $key => $val)
{
$rules['TB1_a.'.$key] = 'required_with:TB1_b.'.$key;
$rules['TB1_b.'.$key] = 'required_with:TB1_a.'.$key;
}
*/
return $rules;
}