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

Как исправить ЧПУ в пагинация Yii2?

Здравствуйте!
в конфиге urlManager правила чпу написано так
'<url:[a-z\-_]*>' => 'site/get-page',
  [
    'pattern' => '<url:[a-z\-_]*>/<page:\d+>',
    'route' => 'site/get-page',
    'defaults' => ['page' => 1]
  ],

и в результате получается такая ссылка при клике
/site/category?url=auto&page=2
а не
/auto/2
как это исправить?
а если в ручной набрал адрес /auto/2 то все работает...в пагинацию почему такой урл получается?

кстати
/site/category это из-за екшен get-page
public function actionGetPage($url){
    if(isset($url)){
      $res = Url::find()->where(['url'=>$url,'language'=>Yii::$app->params['admin_lang']])->asArray()->one();
      // debug($res); die;
      if(!empty($res)){
        if($res['type'] == 'category'){
          $this->createMetaTagLang(Url::find()->where(['parent_id'=>$res['parent_id'],'type'=>'category'])->indexBy('language')->asArray()->all(),'category');
          return Yii::$app->runAction('/site/category/',['id'=>$res['parent_id']]);
        }
      }
    }
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
    return $this->render('error');
  }
  • Вопрос задан
  • 324 просмотра
Пригласить эксперта
Ответы на вопрос 1
Первое, что приходит в голову - написать свою реализацию
MyPagination extends \yii\data\Pagination
и там уже переопределить метод
\yii\data\Pagination::createUrl($page, $pageSize = null, $absolute = false)

Но этот метод мне не очень нравится. В свободное время посмотрю как это было реализовано у меня в одном проекте и, если пойму, то дополню свой ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы