public function actionSettings() { $languages = Languages::find()->select(['url', 'name'])->all(); $model = new SettingsForm(); $model->frontend_default_language = Languages::getDefaultLanguage()->url; $model->setAttributes(ArrayHelper::map(Settings::find()->all(), 'name', 'value')); if ($model->load(Yii::$app->request->post()) && $model->validate()) { foreach ($model->attributes as $key => $value) { Settings::updateAll(['value' => (string) $value], '`name` = :key', [':key' => $key]); } Languages::setDefaultLanguage($model->frontend_default_language); Yii::$app->getSession()->setFlash('success', Yii::t('main', 'Settings successfully saved')); } return $this->render('settings', ['model' => $model, 'languages' => $languages]); }
/** * Load available languages. * @return array of language data * @TODO: Shouldn't get the current language */ public static function getLanguages() { $key = 'languages'; $data = Yii::$app->cache->get($key); if ($data === false) { $model = Languages::find()->indexBy('id')->orderBy('sort')->all(); foreach ($model as $lang) { if ($lang->active && !empty($lang->name)) { $data['languages'][$lang->locale] = $lang->name; $data['flags'][$lang->locale] = self::getFlagUrl($lang); } if ($lang->default) { $data['default'] = $lang->locale; } } Yii::$app->cache->set($key, $data, 0); } self::$languages = $data['languages'] ? $data['languages'] : array(); self::$languagesFlags = $data['flags']; self::$languagesDefault = $data['default']; return self::$languages; }
<?php use yii\helpers\Html; use yii\bootstrap\ActiveForm; use yii\bootstrap\Tabs; use common\models\Languages; /* @var $this yii\web\View */ /* @var $model fonclub\menu\models\MenuItem */ /* @var $form yii\bootstrap\ActiveForm */ $languages = Languages::find()->all(); $this->registerJs("\n \$('#select-menu').on('click', function(){\n \$('#modules-menu').toggle();\n \$('#selectParams').empty();\n });\n\n \$('.menu-module-type').on('click', function(e){\n e.preventDefault();\n var url = \$(this).data('url');\n var action = \$(this).data('action');\n\n if(action !== ''){\n \$('#selectParams').load(action, function() {\n \$('#selectParams select').on('change', function(){\n var query = \$(this).find(':selected').data('query');\n \$('#menuitem-url').val(url+'?'+query);\n });\n });\n }\n else\n \$('#menuitem-url').val(url);\n });\n "); ?> <div class="menu-item-form"> <?php $form = ActiveForm::begin(); ?> <?php $form->errorSummary($model); ?> <?php foreach ($languages as $language) { $items[$language->name] = ['label' => $language->name, 'active' => Yii::$app->language == $language->url, 'content' => $form->field($model, 'title_' . $language->url)->textInput(['maxlength' => 255]), 'options' => ['id' => 'tab_' . $language->url]]; } echo Tabs::widget(['items' => $items]); ?> <?php