地址的Laravel验证规则
In my project forms I request users to input addresses. Sometimes a single form can have 2 addresses. An address is always 3 fields (city, street and house number).
To validate I use an external service that returns either gps coordinates or an error, in which case I manually add an error to the validator. I even wrote a helper function so in my controllers it looks like this:
$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')
);
However this solution seems very hacky and repetitive, what I want is just to pass a rule to the validator, that will only receive a prefix, like "firstaddr" or "secondaddr". Is it possible to do it?
在我的项目表单中,我请求用户输入地址。 有时单个表单可以有2个地址。 地址总是3个字段(城市,街道和门牌号)。 p>
要验证我使用的是返回gps坐标或错误的外部服务,在这种情况下我手动添加错误 到验证器。 我甚至写了一个辅助函数,所以在我的控制器中看起来像这样: p>
$ 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')
);
code> pre>
然而,这个解决方案似乎非常hacky和重复,我想要的只是将规则传递给验证器,只会收到 一个前缀,如“firstaddr”或“secondaddr”。 有可能吗? p>
div>
Since Laravel 5.5 you can define custom validation rules.
In your controller it would look something like
$request->validate([
'firstaddr' => [new Address],
'secondaddr => [new Address]
]);
And you could combine that with a form request validation so that the validation logic happens before the execution enters the controller.