2017-06-05 171 views
1

我已經開始修改Laravel中的驗證器,並且似乎已將自己編程到一個角落。Laravel驗證器,在驗證中添加參數

背景

我有我用它來檢查,如果一個地址,通過谷歌地圖存在的方法。由於我開始在該文件中只有一個文件和驗證,我只是讓它返回一個對象,其中包含經度和緯度匹配以及格式化地址。

return (object) ['result' => (bool) $match, 'formatedAddress' => (string) $googleMaps->formatted_address]; 

(類型轉換爲清晰起見,在這一點上在代碼中沒有實際的類型轉換。)

該控制器運作良好,因爲我可以重用的方法中的變量,但沒有這麼好之後將其移動到AppServiceProvider

問:

有沒有一種方法,使Validator::extend()設置在驗證一個公共參數,以便我能到達格式的地址?還是我必須以另一種方式去做這件事?

使用PHP 5.6和Laravel 5.4。

回答

1

我實際上找到了答案,而修補一點點。我在我的情況中犯了一個錯誤,所以它甚至沒有達到我設置變量的地步。 基本上,這是解決方案:

Validator::extend('location', function (
    $attribute, $value, $parameters, $validator 
) { 
    $validator->location = true; 
} 

希望我的輕微錯誤和監督能幫助別人不會陷入同樣的​​方式。