/** * Обработка запроса * * @param mixed $event * @return void */ public function handleLanguageBehavior($event) { /* @var $request \CHttpRequest */ $request = Yii::app()->getRequest(); $current = $this->lm->getCurrentLang(); $this->setLanguage($current); $default = $this->lm->getDefaultLang(); $fromUrl = $this->lm->getLangFromUrl(); if (null === $fromUrl && $current !== $default) { $request->redirect($this->lm->replaceLangInUrl($request->getUrl(), $current)); } if (null !== $fromUrl && $current === $default) { $request->redirect($this->lm->removeLangFromUrl($request->getUrl())); } }
/** * @param \yupe\components\urlManager\LangUrlManager $manager * @param CHttpRequest $request * @param string $pathInfo * @param string $rawPathInfo * @return bool|string */ public function parseUrl($manager, $request, $pathInfo, $rawPathInfo) { $slugs = Yii::app()->getCache()->get(self::CACHE_KEY); if (false === $slugs) { /* @var $cmd CDbCommand */ $cmd = Yii::app()->getDb()->createCommand(); $slugs = $cmd->setFetchMode(PDO::FETCH_COLUMN, 0)->from('{{page_page}}')->select('slug')->queryAll(); Yii::app()->getCache()->set(self::CACHE_KEY, $slugs, 0); } $parts = explode('/', $manager->removeLangFromUrl($pathInfo)); if (!empty($parts)) { $slug = $parts[0]; if (in_array($slug, $slugs, true)) { return 'page/page/view/slug/' . $slug; } } return false; }