Cake PHP 3.8 изменение URL-адресов, сгенерированных числами Пагинатора, на относительные - PullRequest
0 голосов
/ 08 января 2020

Приложение имеет несколько префиксных маршрутов, таких как:

Router::scope('/ru', function (RouteBuilder $routes) {
    $lang = 2;
    $routes->setRouteClass(DashedRoute::class);
    $routes->connect('/:slug',                          ['controller' => 'Pages', 'action' => 'pages', 'lang' => $lang])->setPass(['slug']);
$routes->fallbacks(DashedRoute::class);
});

Страница, о которой идет речь: http://localhost: 8765 / ru / smi-o-nas , где есть несколько ссылок на страницы используя этот метод:

<?= $this->Paginator->numbers() ?>

Генерирует ссылки, включая соответствующий контроллер и действие:

http://localhost:8765/ru/pages/pages/smi-o-nas?page=2 

Так что маршруты настроены неправильно или есть возможность сделать Paginator сгенерируйте относительные ссылки следующим образом:

http://localhost:8765/ru/smi-o-nas?page=2

Посмотрел документы, вспомогательный код paginator, но все, что я придумал, это настройка URL-адреса конфигурации Paginator, который по-прежнему бесполезен. Используя это:

$this->Paginator->setConfig('options.url', ['controller' => 'ru', 'action' => 'smi-o-nas']);

Просто вставьте / ro / smi-o-nas / в середине для ссылки:

http://localhost:8765/ru/ru/smi-o-nas/smi-o-nas?page=2

Так что мне нужно настроить маршруты в другом Кстати, или есть вариант для относительных URL?

Обновление Я понял, что относительный URL не будет работать для paginator, так как это приведет к URL-адресам типа "localhost: 8765 / ru / ru / smi-o-nas / smi-o -nas? page = 2? page = 3 "

Изворотливый раствор

<?php for($page_number = 1; $page_number <= $this->Paginator->counter("{{pages}}"); $page_number ++):?>
    <?php if ($page_number == $this->Paginator->counter("{{page}}")): ?>
        <span><?= $page_number ?></span>
    <?php else : ?>
        <a href="<?= $this->Url->build($this->request->here) ?>?page=<?= $page_number ?>"><?= $page_number ?></a>
    <?php endif ; ?>
<?php endfor; ?>
...