/** * @return string */ public function getLangUrl() { if ($this->_lang_url === null) { $this->_lang_url = $this->getUrl(); $url_list = explode('/', $this->_lang_url); $lang_url = isset($url_list[1]) ? $url_list[1] : null; Languages::setCurrent($lang_url); if ($lang_url !== null && $lang_url === Languages::getCurrent()->url && strpos($this->_lang_url, Languages::getCurrent()->url) === 1) { $this->_lang_url = substr($this->_lang_url, strlen(Languages::getCurrent()->url) + 1); } } return $this->_lang_url; }
static function getLangByUrl($url = null) { if ($url === null) { return null; } else { $language = Languages::find()->where('`url` = :url', [':url' => $url])->one(); if ($language === null) { return null; } else { return $language; } } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Languages::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'default' => $this->default, 'date_update' => $this->date_update, 'date_create' => $this->date_create]); $query->andFilterWhere(['like', 'url', $this->url])->andFilterWhere(['like', 'local', $this->local])->andFilterWhere(['like', 'name', $this->name]); return $dataProvider; }
/** * @param array|string $params * @return string */ public function createUrl($params) { if (isset($params['lang_id'])) { //Если указан идентификатор языка, то делаем попытку найти язык в БД, //иначе работаем с языком по умолчанию $lang = Languages::findOne($params['lang_id']); if ($lang === null) { $lang = Languages::getDefaultLang(); } unset($params['lang_id']); } else { //Если не указан параметр языка, то работаем с текущим языком $lang = Languages::getCurrent(); } //Получаем сформированный URL(без префикса идентификатора языка) $url = parent::createUrl($params); //Добавляем к URL префикс - буквенный идентификатор языка if ($url == '/') { return '/' . $lang->url; } else { return '/' . $lang->url . $url; } }
/** * Finds the Languages model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Languages the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Languages::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function run() { return $this->render('index', ['current' => Languages::getCurrent(), 'language' => Languages::find()->where('id != :current_id', [':current_id' => Languages::getCurrent()->id])->all()]); }