Brand.php 4.92 KB
<?php
    
    namespace common\modules\product\models;
    
    use common\behaviors\SaveImgBehavior;
    use yii\db\ActiveRecord;
    use Yii;
    
    /**
     * This is the model class for table "brand".
     *
     * @property integer   $brand_id
     * @property integer   $brand_name_id
     * @property string    $alias
     * @property string    $image
     * @property string    $meta_title
     * @property string    $meta_desc
     * @property string    $meta_robots
     * @property string    $seo_text
     * @property string    $name
     * @property string    $description
     * @property integer   $sort
     * @property Product[] $products
     */
    class Brand extends ActiveRecord
    {
        public $imageUpload;
        
        public $_items_count = 0;
        
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'brand';
        }
        
        /**
         * @inheritdoc
         */
        
        public function behaviors()
        {
            return [
                [
                    'class'  => SaveImgBehavior::className(),
                    'fields' => [
                        [
                            'name'      => 'image',
                            'directory' => 'brands',
                        ],
                    ],
                ],
                'slug' => [
                    'class'         => 'common\behaviors\Slug',
                    'in_attribute'  => 'name',
                    'out_attribute' => 'alias',
                    'translit'      => true,
                ],
            ];
        }
        
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [
                    [
                        'name',
                        'description',
                    ],
                    'string',
                ],
                [
                    [
                        'brand_name_id',
                        'sort',
                    ],
                    'integer',
                ],
                [
                    [ 'in_menu' ],
                    'boolean',
                ],
                [
                    [
                        'meta_desc',
                        'seo_text',
                    ],
                    'string',
                ],
                [
                    [
                        'alias',
                        'name',
                    ],
                    'string',
                    'max' => 250,
                ],
                [
                    [
                        'meta_title',
                        'image',
                    ],
                    'string',
                    'max' => 255,
                ],
                [
                    [ 'meta_robots' ],
                    'string',
                    'max' => 50,
                ],
                [
                    [ 'imageUpload' ],
                    'safe',
                ],
                [
                    [ 'imageUpload' ],
                    'file',
                    'extensions' => 'jpg, gif, png',
                ],
            ];
        }
        
        /**
         * @inheritdoc
         */
        public function attributeLabels()
        {
            return [
                'name'          => Yii::t('product', 'Name of the brand'),
                'brand_id'      => Yii::t('product', 'Brand ID'),
                'brand_name_id' => Yii::t('product', 'Brand Name ID'),
                'alias'         => Yii::t('product', 'Alias'),
                'image'         => Yii::t('product', 'Image'),
                'imageUrl'      => Yii::t('product', 'Image'),
                'meta_title'    => Yii::t('product', 'Meta Title'),
                'meta_desc'     => Yii::t('product', 'Meta Desc'),
                'meta_robots'   => Yii::t('product', 'Meta Robots'),
                'seo_text'      => Yii::t('product', 'Seo Text'),
                'in_menu'       => Yii::t('product', 'Выводить в меню'),
                'description'   => Yii::t('product', 'Описание'),
                'sort'          => Yii::t('product', 'Порядок'),
            ];
        }
        
        /**
         * @return \yii\db\ActiveQuery
         */
        public function getProducts()
        {
            return $this->hasMany(Product::className(), [ 'brand_id' => 'brand_id' ]);
        }
        
        public function getImageFile()
        {
            return empty($this->image) ? null : '/storage/brands/' . $this->image;
        }
        
        public function getImageUrl()
        {
            return empty($this->image) ? null : '/storage/brands/' . $this->image;
        }
        
    }