在我的项目表单中,我请求用户输入地址。有时单个表单可以有2个地址。地址总是3个字段(城市,街道和门牌号)。
要验证我使用的是返回gps坐标或错误的外部服务,在这种情况下,我会手动向验证程序添加错误。我甚至写了一个辅助函数,所以在我的控制器中它看起来像这样:
$this->validateAddress(
$v,
$request->input('firstaddr.city'),
$request->input('firstaddr.street'),
$request->input('firstaddr.house')
);
$this->validateAddress(
$v,
$request->input('secondaddr.city'),
$request->input('secondaddr.street'),
$request->input('secondaddr.house')
);
然而,这个解决方案似乎非常hacky和重复,我想要的只是将规则传递给验证器,它只会收到一个前缀,如“firstaddr”或“secondaddr”。有可能吗?
答案 0 :(得分:4)
从Laravel 5.5开始,您可以定义custom validation rules。
在您的控制器中,它看起来像
$request->validate([
'firstaddr' => [new Address],
'secondaddr => [new Address]
]);
您可以将其与form request validation结合使用,以便验证逻辑在执行进入控制器之前发生。