/** * @return \yii\base\Model[] */ public function getTranslationModels() { $models = []; $languages = LanguageHelper::getLanguageModels(); foreach ($languages as $language) { if ($language->locale === LanguageHelper::getDefaultLanguage()->locale) { continue; } $models[$language->locale] = $this->getTranslation($language->locale); } return $models; }
/** * @param $name * * @return mixed */ public function __get($name) { if ($this instanceof Translateable && in_array($name, $this->getTranslationAttributes(), true)) { $defaultLanguage = LanguageHelper::getDefaultLanguage()->locale; $language = \Yii::$app->language; if ($defaultLanguage === $language) { return parent::__get($name); } /** @var \yii\db\ActiveRecord $translation */ $translation = $this->translate($language); if ($translation->isNewRecord) { return parent::__get($name); } return $translation->{$name}; } return parent::__get($name); }
/** * @param ConfigurationModel $model * * @return bool */ public function loadModels($model) { $loaded = true; //\common\helpers\Dump::dump(Yii::$app->request->post(), 1); $models = $model->getModels(); foreach ($models as $key => $item) { if ($item instanceof \common\components\model\Translateable) { $languages = LanguageHelper::getLanguageModels(); $items = []; foreach ($languages as $language) { if ($language->locale === LanguageHelper::getDefaultLanguage()->locale) { continue; } $items[$language->locale] = $item->getTranslation($language->locale); } $loaded &= ConfigurationModel::loadMultiple($items, Yii::$app->request->post(), null, $key); } } return $loaded & ConfigurationModel::loadMultiple($models, Yii::$app->request->post()); }
/** * @param \yii\db\ActiveRecord $model * * @return bool */ public function loadModels($model) { $loaded = true; if ($model instanceof \common\components\model\Translateable) { $languages = LanguageHelper::getLanguageModels(); $models = []; foreach ($languages as $language) { if ($language->locale === LanguageHelper::getDefaultLanguage()->locale) { continue; } $models[$language->locale] = $model->getTranslation($language->locale); } if (!empty($models)) { $loaded &= Model::loadMultiple($models, Yii::$app->request->post()); } } $loaded = $model->load(Yii::$app->request->post()) && $loaded; return $loaded; }