我已经开始修补Laravel中的验证员了,似乎已将自己编程到一个角落。
背景
我有一种方法可以通过Google地图检查地址是否存在。由于我开始在该文件中只有一个文件和验证,我只是让它返回一个对象,其中包含经度和纬度匹配以及格式化地址。
return (object) ['result' => (bool) $match, 'formatedAddress' => (string) $googleMaps->formatted_address];
(为了清楚起见,Typecast,此时代码中没有实际的类型转换。)
这在控制器中运行良好,因为我可以在方法中重用变量,但在将其移动到AppServiceProvider
后不太好。
问题:
有没有办法让Validator::extend()
在验证时设置公共参数,以便我可以到达格式化的地址?或者我必须以另一种方式去做这件事吗?
使用PHP 5.6和Laravel 5.4。
答案 0 :(得分:1)
我实际上找到了答案,同时修补了一下。我在我的条件中犯了一个错误,所以它甚至没有达到我设置变量的程度。 基本上,这是解决方案:
Validator::extend('location', function (
$attribute, $value, $parameters, $validator
) {
$validator->location = true;
}
希望我的轻微错误和疏忽可以帮助其他人不会以同样的方式陷入困境。