自定義驗證規則
如果要建立自定義驗證規則,可以通過 Validator 外觀在服務提供者的 boot
方法中執行此操作。
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Validator;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('starts_with', function($attribute, $value, $parameters, $validator) {
return \Illuminate\Support\Str::startsWith($value, $parameters[0]);
});
Validator::replacer('starts_with', function($message, $attribute, $rule, $parameters) {
return str_replace(':needle', $parameters[0], $message);
});
}
}
extend
方法接受一個字串,該字串將是規則的名稱和一個函式,該函式又將傳遞屬性的名稱,要驗證的值,規則引數的陣列和驗證器例項,並且應返回是否驗證通過。在這個例子中,我們檢查值字串是否以給定的子字串開頭。
此自定義規則的錯誤訊息可以像往常一樣在/resources/lang/[lang]/validation.php
檔案中設定,並且可以包含佔位符,例如,引數值:
'starts_with' => 'The :attribute must start with :needle.'
replacer
方法接受一個字串,該字串是規則的名稱和一個函式,該函式又將傳遞原始訊息(在替換之前),屬性的名稱,規則的名稱以及規則引數的陣列,並應在根據需要替換佔位符後返回訊息。
使用此規則與任何其他規則:
$this->validate($request, [
'phone_number' => 'required|starts_with:+'
]);