[ 'class' => 'yii\behaviors\TimestampBehavior', 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => [ 'date_create', 'date_update', ], ActiveRecord::EVENT_BEFORE_UPDATE => [ 'date_update', ], ], ], ]; } /** * @inheritdoc */ public function rules() { return [ [ [ 'url', 'local', 'name', 'date_create', 'date_update', ], 'required', ], [ [ 'default' ], 'boolean', ], [ [ 'date_create', 'date_update', ], 'integer', ], [ [ 'url', 'local', 'name', ], 'string', 'max' => 255, ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'language_id' => Yii::t('app', 'Language ID'), 'url' => Yii::t('app', 'Url'), 'local' => Yii::t('app', 'Local'), 'name' => Yii::t('app', 'Name'), 'default' => Yii::t('app', 'Default'), 'date_create' => Yii::t('app', 'Date Create'), 'date_update' => Yii::t('app', 'Date Update'), ]; } /** * Get current language * @return null|Language */ public static function getCurrent() { if(self::$current === NULL) { self::$current = self::getDefaultLanguage(); } return self::$current; } /** * Set current language by Url param * * @param null|string $url Language url param */ public static function setCurrent($url = NULL) { $language = self::getLanguageByUrl($url); self::$current = ( $language === NULL ) ? self::getDefaultLanguage() : $language; Yii::$app->language = self::$current->local; } /** * Get default language * @return null|Language */ public static function getDefaultLanguage() { /** * @var null|Language $language */ $language = self::find() ->where([ 'default' => true ]) ->one(); return $language; } /** * Get language by Url param * * @param null|string $url Language url param * * @return null|Language */ public static function getLanguageByUrl($url = NULL) { if($url === NULL) { return NULL; } else { /** * @var null|Language $language */ $language = self::find() ->where([ 'url' => $url ]) ->one(); if($language === NULL) { return NULL; } else { return $language; } } } }