dilikpulatov
@dilikpulatov
веб-программист

Мультиязычный сайт с динамический урелом в Yii2 как?

Здравствуйте!
задача такая: Мультиязычный сайт...и динамичский урл у каждому пост, категория и странице
то есть примерно так страница about(en), o-nas(ru) и т.д
при изменения языка должно измениться вес страница не потеря положения
это примерно так: был site.com/ru/o-nas -> site.com/en/about

для этого я уже сделал кое что-то
'urlManager' => [
  'enablePrettyUrl' => true,
  'showScriptName' => false,
  'class'=>'app\components\LangUrlManager',
  'rules' => [
    'login'=>'site/login',
    'logout'=>'site/logout',
    [
      'pattern' => '/<url1:\w+>',
      'route' => 'site/get-page',
    ],
    [
      'pattern' => '/<url1:\w+>/<url2:\w+>',
      'route' => 'site/get-page',
    ],
  ],
],

в контроллере
(Url здесь не хелпер а модел)
public function actionGetPage($url1,$url2=NULL){
  // debug($url1); die;
  if(isset($url1)){
    $url = Url::find()->where(['url'=>$url1,'language'=>Yii::$app->lang])->asArray()->one();
    if(!empty($url)){
      if($url['type'] == 'category'){
        return Yii::$app->runAction('/site/category/',['id'=>$url['parent_id']]);
      }
    }
  }
  header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 
  return $this->render('error');
}

все работает отлично но проблема в том что есть урл: /o_nas то все работает но если /o-nas то выдаёт 404
чего-то я пропустил? в чём проблема?
кстати если есть другой вариант у вас решать этот задачу то подскажите
(извините за ошибки)
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
замените везде \w+ на [a-zA-Z0-9\-_]*
и почитайте про регулярки ....
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы