Laravel 5 - 在哪里放置可重用的自定义验证器?
Laravel 5 - where to place reusable custom validator?
我想知道我想在多个地方使用的自定义验证器的正确位置在哪里?
例如,我有 min_image_size
个验证器:
Validator::extend('min_image_size', function($attribute, $value, $parameters) {
$imageSize = getimagesize($value->getPathname());
return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
});
按照正确的Laravel方式,我应该把它放在哪里?
我想我会创建一个 class 用于自定义验证,我可以在其中编写自定义规则并将其放入库文件夹或可能是中间件。
肯定会在 Service Provider 中扩展验证器。您可以使用现有的 app/Providers/AppServiceProvider.php
或创建另一个仅用于验证。
然后,在 boot()
方法中,添加:
public function boot(){
$this->app['validator']->extend('min_image_size', function($attribute, $value, $parameters) {
$imageSize = getimagesize($value->getPathname());
return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
});
}
将实际验证规则放在单独的 class 中并使用此语法可能也值得:
$this->app['validator']->extend('min_image_size', 'MyCustomValidator@validateMinImageSize');
我想知道我想在多个地方使用的自定义验证器的正确位置在哪里?
例如,我有 min_image_size
个验证器:
Validator::extend('min_image_size', function($attribute, $value, $parameters) {
$imageSize = getimagesize($value->getPathname());
return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
});
按照正确的Laravel方式,我应该把它放在哪里?
我想我会创建一个 class 用于自定义验证,我可以在其中编写自定义规则并将其放入库文件夹或可能是中间件。
肯定会在 Service Provider 中扩展验证器。您可以使用现有的 app/Providers/AppServiceProvider.php
或创建另一个仅用于验证。
然后,在 boot()
方法中,添加:
public function boot(){
$this->app['validator']->extend('min_image_size', function($attribute, $value, $parameters) {
$imageSize = getimagesize($value->getPathname());
return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
});
}
将实际验证规则放在单独的 class 中并使用此语法可能也值得:
$this->app['validator']->extend('min_image_size', 'MyCustomValidator@validateMinImageSize');