Laravel:仅在DOM中可用时验证输入
我创建了一个包含以下字段的表单:Laravel:仅在DOM中可用时验证输入,laravel,validation,vuejs2,axios,Laravel,Validation,Vuejs2,Axios,我创建了一个包含以下字段的表单: 名字 电子邮件 国家 城市 地址 如果用户选择了一个有州的国家(例如美国),则表格转换为: 名字 电子邮件 国家 陈述 城市 地址 为了验证这一点,我创建了一个单独的表单请求,如下所示: public function rules() { return [ 'name' => 'required|max:255', 'email' => 'required|email, 'country_id' =
- 名字
- 电子邮件
- 国家
- 城市
- 地址
- 名字
- 电子邮件
- 国家
- 陈述
- 城市
- 地址
public function rules()
{
return [
'name' => 'required|max:255',
'email' => 'required|email,
'country_id' => 'required|integer',
'state_id' => 'nullable|integer',
'city_id' => 'required|integer',
'address' => 'required',
];
}
问题是,如果我这样离开它,那么如果我不选择一个状态,它将通过验证
如果我成功了:
'state_id' => 'sometimes|nullable|integer',
然后再次通过验证
如果我成功了:
'state_id' => 'required|nullable|integer',
它不会通过验证,但如果表单中没有状态字段,它将再次抛出验证错误
我读了很多关于这方面的文章,但似乎没有什么能帮我解决这个问题
PS1:我想在表单请求中解决这个问题,而不是在控制器中。我认为
if($request->has('states')){...}
我可以帮忙,但我还是想保持表格中的一切整洁
PS2:我正在使用VueJS和Axios从表单中添加/删除状态。整个表单实际上是一个Vue组件
有什么线索吗
提前谢谢你 您可以通过
验证程序
上的有时
方法有条件地添加规则
$v->sometimes('state_id', 'required|integer', function ($input) {
return in_array($input->countries, [1,2,3,4...]
});
您可以将required_与
参数行一起使用,但由于验证基于输入值而不仅仅是存在,因此自定义验证规则可能是您的最佳选择
Per谢谢您的帮助。我会尝试一下,然后回来汇报!