Since: 2.0
Author: Taras Gudz (gudz.taras@gmail.com)
Inheritance: extends FileValidator
 public function beforeValidate($event)
 {
     $image = UploadedFile::getInstance($this->owner, $this->attribute);
     if ($image) {
         $validator = new ImageValidator($this->rules);
         if (!$validator->validate($image, $error)) {
             $this->owner->addError($this->attribute, $error);
         } else {
             $filename = md5(file_get_contents($image->tempName)) . "." . $image->extension;
             $image->saveAs(rtrim(Yii::getAlias($this->destination), '/') . '/' . $filename);
             $this->owner->{$this->attribute} = $filename;
         }
     }
 }
 /**
  * @param ActiveRecord $owner
  */
 public function attach($owner)
 {
     parent::attach($owner);
     // Применяем конфигурационные опции
     foreach ($this->imageConfig as $key => $value) {
         $var = '_' . $key;
         $this->{$var} = $value;
     }
     // Вычисляем корень сайта
     if (empty($this->_rootPathAlias)) {
         $savePathParts = explode('/', $this->_savePathAlias);
         // Удаляем последнюю часть
         unset($savePathParts[count($savePathParts - 1)]);
         // Объединяем все части обратно
         $this->_rootPathAlias = implode('/', $savePathParts);
     }
     // Добавляем валидатор require
     if ($this->_imageRequire) {
         $owner->validators->append(Validator::createValidator(RequiredValidator::className(), $owner, $this->_imageAttribute));
     }
     // Подключаем валидатор изображения
     $validatorParams = array_merge(['extensions' => $this->_fileTypes, 'maxSize' => $this->_maxFileSize, 'skipOnEmpty' => true, 'tooBig' => 'Изображение слишком велико, максимальный размер: ' . floor($this->_maxFileSize / 1024 / 1024) . ' Мб'], $this->_imageValidatorParams);
     $validator = Validator::createValidator(ImageValidator::className(), $owner, $this->_imageAttribute, $validatorParams);
     $owner->validators->append($validator);
 }
Example #3
0
 /**
  * @inheritdoc
  */
 protected function defaultValidators()
 {
     return [ImageValidator::className()];
 }
 /**
  * @throws \yii\base\InvalidConfigException
  */
 protected function addValidator()
 {
     unset($this->validator['maxFiles']);
     /* @var $validator \yii\validators\FileValidator|\yii\validators\ImageValidator */
     $validator = \Yii::createObject(array_merge(['class' => $this->image ? \yii\validators\ImageValidator::className() : \yii\validators\FileValidator::className(), 'attributes' => [$this->attribute]], $this->validator));
     $this->owner->getValidators()->offsetSet($this->getValidatorIndex(), $validator);
 }