public function create() { $result = false; if ($this->validate()) { $result = $this->save(); $langList = Lang::find()->where(['<>', 'code', $this->lang])->all(); $class = self::className(); foreach ($langList as $lang) { $model = new $class(); $model->attributes = $this->attributes; $model->lang = $lang->code; $model->save(); } } return $result; }
/** * Creates a new Page model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $models = []; $langList = Lang::find()->orderBy(['default' => SORT_DESC])->all(); foreach ($langList as $lang) { $models[$lang->code] = new Page(); $models[$lang->code]->lang = $lang->code; $models[$lang->code]->id = $models[$lang->code]->nextId; } if (Page::loadMultiple($models, \Yii::$app->request->post()) && Page::validateMultiple($models)) { foreach ($models as $model) { $model->save(); } return $this->redirect(['index']); } else { return $this->render('create', ['models' => $models]); } }
/** * Lists all Lang models. * @return mixed */ public function actionIndex() { $dataProvider = new ActiveDataProvider(['query' => Lang::find()]); return $this->render('index', ['dataProvider' => $dataProvider]); }
public static function getChangeData() { $uri = \Yii::$app->request->url; $langs = Lang::find()->orderBy(['default' => SORT_DESC])->all(); $preg = []; foreach ($langs as $lang) { if (!$lang->default) { $preg[] = $lang->code; } } $base = Url::base(); if ($uri == '/en') { } foreach ($langs as $lang) { $url = $lang->default ? $base . '/' : $base . '/' . $lang->code; $data[$url] = $lang->title; } return $data; $preg = '#\\/(' . implode('\\/|', $preg) . ')#i'; $cleanUrl = preg_replace($preg, '', $uri); $route = str_replace($base, '', $uri); foreach ($langs as $lang) { if ($lang->default) { $lang->url = $cleanUrl; } elseif (!preg_match($preg, $uri)) { $lang->url = $base . '/' . $lang->code . $route; } if (substr($lang->url, -1, 1) == '/') { $lang->url = substr($lang->url, 0, strlen($lang->url) - 1); } $data[$lang->url] = $lang->title; } if (YII_DEBUG) { print_r([$uri, $base, $data]); } return $data; }