Доброго времени суток!
Ситуация следующая.
В переопределённом методе createUrl класса UrlManager для создания ЧПУ урла для ссылок на списки постов в блоге сделал следующее:
if ($params[0] == 'blogs/posts' && isset($params['id'])) {
$model = Blogs::findOne($params['id']);
$alias = $model->blog_alias;
$url = '/blogs/'.$alias;
}
Парсинг самого уже самого урла произвожу в переопределённом методе parseRequest класса UrlRule:
if (strpos(Url::to(''), '/blogs/') !== false) {
$alias = explode('/blogs/', Url::to(''));
$model = Blogs::find()->where('blog_alias = :name', [':name'=>array_pop($alias)])->one();
if ($model) {
$params['id'] = $model->blog_id;
return ['/blogs/posts', $params];
}
Код контроллера отвечающего за вывод постов блога:
public function actionPosts($id)
{
$this->layout = 'default_two_columns';
$blog = $this->findModel($id);
$query = BlogsPosts::find()
->where('bp_blog_id = :blog', [':blog' => $id])
->orderBy('bp_post_created DESC');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 20,
],
]);
return $this->render('posts', [
'dataProvider' => $dataProvider,
'blog' => $blog
]);
}
Всё работает отлично, кроме кнопок пагинации. Так как в данном случае там отсутствуют параметры page и per-page, а ссылка кнопки = урлу самой страницы.
Помогите найти выход из данной проблемы.
Код мне достался от предыдущих кодеров.
Заранее всем благодарен за помощь!