php - Laravel 5 - 在哪里放置可重用的自定义验证器?

标签 php laravel laravel-5 code-organization laravel-validation

我想知道我想在多个地方使用的自定义验证器的正确位置在哪里?

例如,我有 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 方式,我应该把它放在哪里?

最佳答案

肯定会在 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]);
    });
}

将实际的验证规则放在一个单独的类中并使用此语法可能也是值得的:

$this->app['validator']->extend('min_image_size', 'MyCustomValidator@validateMinImageSize');

关于php - Laravel 5 - 在哪里放置可重用的自定义验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742923/

相关文章:

php - 自定义 PHP SessionHandler 类写入问题

php - 通过查询数据库中的图像文件名,在 Codeigniter 中使用 AJAX 显示图像列表

mysql - 需要将原始查询转换为 laravel Eloquent

php - Laravel DB select 在某些数据绑定(bind)后生成意外的 SQL 错误

Php 关联两个 ID

php - Android 未收到 PHP 服务器的响应

php - 如何使用 laravel 基于数据库条目运行 cron 作业?

sql - 使用原始 SQL 时,Laravel 自然会阻止 SQL 注入(inject)吗?

php - Laravel 什么时候清除缓存?

php - 无论如何要根据表名获取模型名称