Yii2检查url是否指向有效图像

时间:2017-11-22 12:10:16

标签: php yii2

我刚刚开始学习Yii2。 我有一个表单,用户必须输入一个URL到外部图像。 是否有一些规则/验证可以检查此URL是否存在? 标准[['图像'],'图像']和[['图像'],' url'],没有做什么我想要。

3 个答案:

答案 0 :(得分:2)

您可以像这样添加自己的验证:

['image', function($attribute, $params) {
    if (filter_var($this->image, FILTER_VALIDATE_URL) === FALSE) {
        $this->addError('image', 'Not an URL.');
        return;
    }
    try {
        $headers = get_headers($this->image);
        if (!stripos($headers[0], "200 OK"))
            $this->addError('image', 'Invalid URL.');
    } catch (\Exception $e) {
        $this->addError('image', 'Invalid URL.');
    }
} ],

然而,在我的机器上这有点慢。但试一试。

答案 1 :(得分:0)

所以在模型规则中我添加了

[['image'], 'validateImage']

其中validateImage是我在同一模型中编写的自定义函数:

    // function that checks if path leads to an actual image
    public function validateImage($attribute, $params, $validator) {
      if (!($something = @getimagesize($this->$attribute))) {
         $this->addError($attribute, 'Such an image doen\'t exist');
      }
    }

答案 2 :(得分:0)

您可以在规则数组中的模型中编写自定义验证规则,您可以将其放在代码

之下
['image', 'validateimagecheck'],

你可以validateimagecheck在模型中加入

public function validateimagecheck($attribute, $params)
{
if (!(file_exists($this->image))) {
$this->addError('image', 'Please enter valid image url');
}


}