0, 'operator' => '>='], [['name', 'url'], 'string', 'max' => 255], [['image'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg, jpeg, gif, webp'], [['name', 'url'], 'required'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'ID'), 'name' => Yii::t('app', 'Name'), 'image' => Yii::t('app', 'Image'), 'url' => Yii::t('app', 'Url'), 'target' => Yii::t('app', 'Target'), 'sort' => Yii::t('app', 'Sort'), 'status' => Yii::t('app', 'Is Display'), 'created_at' => Yii::t('app', 'Created At'), 'updated_at' => Yii::t('app', 'Updated At'), ]; } public function beforeValidate() { if($this->image !== "0") {//为0表示需要删除图片,Util::handleModelSingleFileUpload()会有判断删除图片 $this->image = UploadedFile::getInstance($this, "image"); } return parent::beforeValidate(); } /** * @inheritdoc */ public function beforeSave($insert) { Util::handleModelSingleFileUpload($this, 'image', $insert, '@friendlylink/'); return parent::beforeSave($insert); } public function beforeDelete() { if( !empty( $this->image ) ){ Util::deleteThumbnails(Yii::getAlias('@frontend/web/') . str_replace(Yii::$app->params['site']['url'], '', $this->image), [], true); } return parent::beforeDelete(); } public function afterFind() { /** @var $cdn \feehi\cdn\TargetAbstract $cdn */ $cdn = Yii::$app->get('cdn'); $this->image = $cdn->getCdnUrl($this->image); } }