'jpg, gif, png', 'skipOnEmpty'=>true ], ]; } public function attributeLabels() { return [ 'name'=>'Название', 'body'=>'Описание', 'char'=>'Характеристики', 'sort'=>'Сорт.', 'image'=>'Изображения', 'fasovka'=>'Фасовка', 'type'=>'Типы', 'brends'=>'Производители', 'top'=>'Топ', 'new'=>'Новинка', 'akciya'=>'Акция', 'out_of_stock'=>'Нет в наличии', 'similar'=>'Похожие товары', 'featured'=>'Рекоммендуемые товары', ]; } public function beforeSave($insert) { if (!$this->translit) $this->translit = Translite::rusencode($this->name); if($image = UploadedFile::getInstance($this,'image')){ $this->deleteImage($this->old_image); //$this->image = $image; $this->image = time() . '_' . rand(1, 1000) . '.' . $image->extension; $image->saveAs('upload/products/'.$this->image); $resizeObj = new resize('upload/products/'.$this->image); $resizeObj -> resizeImage(180, 240, 'landscape'); $resizeObj -> saveImage('upload/products/ico/'.$this->image, 100); $resizeObj -> resizeImage(400, 400, 'landscape'); $resizeObj -> saveImage('upload/products/big/'.$this->image, 100); }else $this->image = $this->old_image; return parent::beforeSave($insert); } public function afterSave($insert, $changedAttributes) { if(!$insert) { ProductsFasovka::deleteAll(['product_id' => $this->id]); } if(is_array($this->fasovka)) { foreach ($this->fasovka as $fasovka) { $ProductsFasovka = new ProductsFasovka(); $ProductsFasovka->product_id = $this->id; $ProductsFasovka->fasovka_id = $fasovka; $ProductsFasovka->save(); } } if(!$insert) { ProductsType::deleteAll(['product_id' => $this->id]); } if(is_array($this->type)) { foreach ($this->type as $type) { $ProductsType = new ProductsType(); $ProductsType->product_id = $this->id; $ProductsType->type_id = $type; $ProductsType->save(); } } if(!$insert) { ProductsBrends::deleteAll(['product_id' => $this->id]); } if(is_array($this->brends)) { foreach ($this->brends as $brend) { $ProductsBrends = new ProductsBrends(); $ProductsBrends->product_id = $this->id; $ProductsBrends->brend_id = $brend; $ProductsBrends->save(); } } return parent::afterSave($insert, $changedAttributes); } public function beforeDelete() { $this->deleteImage($this->image); return parent::beforeDelete(); } public function getFasovka() { return $this->hasMany(Fasovka::className(), ['id' => 'fasovka_id'])->viaTable(ProductsFasovka::tableName(), ['product_id' => 'id']); } public function setFasovka($fasovka) { $this->fasovka = $fasovka; } public function getType() { return $this->hasMany(Type::className(), ['id' => 'type_id'])->viaTable(ProductsType::tableName(), ['product_id' => 'id']); } public function setType($type) { $this->type = $type; } public function getBrends() { return $this->hasMany(Brends::className(), ['id' => 'brend_id'])->viaTable(ProductsBrends::tableName(), ['product_id' => 'id']); } public function setBrends($brends) { $this->brends = $brends; } public function getCatalog() { return $this->hasOne(Catalog::className(), ['id' => 'catalog_id']); } public function getMods() { return $this->hasMany(Mod::className(), ['product_id' => 'id']); } public function getFotos() { return $this->hasMany(Fotos::className(), ['product_id' => 'id']); } public function deleteImage($file){ if(!empty($file)){ @unlink('upload/products/'.$file); @unlink('upload/products/ico/'.$file); @unlink('upload/products/big/'.$file); } } }