php - 自定义验证错误参数

标签 php validation laravel

我在我的 Laravel 应用程序中创建了一个自定义验证器,我想生成一个自定义错误。理想情况下,您的图像必须至少为 500 x 500 像素

但是,我不知道如何在 validation.php 文件中获取参数 (500, 500)。

这是当前的错误信息:

"image_dimensions" => "Your :attribute must be at least GET PARAMETERS HERE",

这是验证器:

Validator::extend('image_dimensions', function($attribute, $value, $parameters) {

    $image = Image::make($value);

    $min_width = $parameters[0];
    $min_height = $parameters[1];

    if ($image->getWidth() < $min_width) {
        return false;
    } else if ($image->getHeight() < $min_height) {
        return false;
    }

    return true;

});

我在这里使用它:

$validator = Validator::make(
    array(
        'image' => Input::file('file'),
    ),
    array(
        'image' => 'image_dimensions:500,500'
    )
);

如何获取错误消息中给出的参数?

最佳答案

在您的消息中添加替换符,例如 :myMin 和 :myMax

"image_dimensions" => "Your :attribute must be at least :myMin to :myMax",

将替换器添加到您的规则中

Validator::replacer('image_dimensions', function($message, $attribute, $rule, $parameters)
{
    return str_replace(array(':myMin', ':myMax'), $parameters, $message);
});

如果您要扩展验证器,您可以为您的规则添加替换方法:

class CustomValidator extends Illuminate\Validation\Validator {

    public function validateFoo($attribute, $value, $parameters)
    {
        return $value == 'foo';
    }

    protected function replaceFoo($message, $attribute, $rule, $parameters)
    {
        return str_replace(':foo', $parameters[0], $message);
    }

}

有关更多信息,请阅读 laravel docs

关于php - 自定义验证错误参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27900209/

相关文章:

php - Iconv 突然返回问号,我做错了什么?

php - Laravel:如何获取嵌套模型

java - DIY 表单处理、PRG、验证

validation - JSF 2.0;验证器标签 "disabled"取决于页面中的值

php - Laravel 5.2 中的路由问题

php - 抱歉,无法找到您要查找的页面。 RouteCollection.php 第 179 行 1/1 NotFoundHttpException :

php - 隐藏表格的问题不会重新隐藏自己

php - 实现无需注册的投票系统

string - Sonata Admin Bundle - 字符串验证

mysql - 刷新数据库表迁移时出错