地址的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?

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.