powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Постраничная навигация в Yii2
1 сообщений из 1, страница 1 из 1
Постраничная навигация в Yii2
    #39546828
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На странице новостей имеется постраничная навигация, ссылки для перехода по страницам имеют вид:
http://hostname/base/page/2.
Эти ссылки работают нормально. В правилах для них прописано следующее:
Код: php
1.
2.
'base/page/<page:\d+>' => 'base/index',
'base/' => 'base/index',


Имеется страница со статьей и комментариями к статье. В комментариях тоже используется постраничная навигация. Ссылки для перехода по страницам имеют вид:
http://hostname/article/id/1/cat/5/sub/27/page/2
Для них прописаны правила:
Код: php
1.
2.
'article/<params:[\w/]*>page/<page:\d+>' => 'article/article',
'article/<params:[\w/]*>' => 'article/article',


Но ссылка не работает, получаю сообщение об ошибке: The requested URL was not found on this server.
Еще интересный момент: Для вставки сюда ссылок использовал пункт меню "Копировать ссылку". Первая ссылка (со страницы новостей) вставилась сразу нормально, а неработающую ссылку пришлось подредактировать, при вставке она имела вот такой вид:
http://hostname/article/id/1/cat/5/sub/27/page/2

В адресной строке браузера ссылка отображается тоже вот так:
http://hostname/article/id/1/cat/5/sub/27/page/2

Заменил руками %2F на / - стала нормально открываться страница. В браузере (Firefox) в левом нижнем углу при наведении на кнопки пагинации ссылка отображается корректно, а в адресную строку попадает искаженной. В яндекс браузере искаженная ссылка показывается и в левом нижнем углу, и в адресной строке. Ссылка, ведущая просто на страницу, без использования пагинации, работает нормально, а вот когда виджет LinkPager подставляет параметр page - все ломается.
Если в адресе нет параметров id, sub, cat, то пагинатор нормально подставляет параметр page, и все работает нормально.

В контроллере добавил вот такую штуку:
Код: php
1.
2.
3.
$pages->params = ['id' => $id,
                        'cat' => $cat,
                        'sub' => $sub,];


Ссылки на кнопках навигации приняли такой вид:
http://hostname/article/id/1cat/5sub/2page/2
то есть исчезли слешы после значений параметра. Добавил вот такое правило:

Код: php
1.
'article/id/<id:\d+>/cat/<cat:\d+>/sub/<sub:\d+>/page/<page:\d+>' => 'article/article',



и поставил его выше, чем правило:

Код: php
1.
'article/id/<id:\d+>cat/<cat:\d+>sub/<sub:\d+>page/<page:\d+>' => 'article/article',



Путь в адресной строке и в ссылке на кнопках навигации стал правильным, но теперь не выполняется действие контроллера actionArticle().
Если правила поменять местами, то действие выполняется, а ссылка и адрес строятся неправильно. Получается заколдованный круг.
Подскажите, как из этого заколдованного круга выбраться?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Постраничная навигация в Yii2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]