Получить параметр языка внутри Zend Paginator ahref urls (кликабельные ссылки)

Вот мой текущий код в index.phtmlviewscript:

<?= $this->paginationControl($posts,'Sliding','application/partial/paginator', ['route' => 'home','lang'=>'it']); ?>

Я хотел бы передать :langпараметр в этом paginationControlвызове так, чтобы маршрутизатор был уведомлен, и результаты html показывают itlang внутри pagination html ahref code for clickable links.

Я не совсем уверен, как правильно это сделать.

Вот мой маршрут:

'home' => [
    'type' => Segment::class,
    'options' => [
        'route'    => '/:lang',
        'defaults' => [
            'controller' => ApplicationIndexController::class,
            'action'     => 'index',
            'lang'       => 'en'
        ],
    ],
],

Полученный html из этого пагинатора покажет:

/pp/public/it?page=2

Но это в настоящее время показывает

/pp/public/en?page=2

даже когда im на итальянской версии страницы

1 ответ

  1. Ну, это зависит от того, как вы настраиваете свой скрипт paginationcontrol partial или viewpage.

    Параметры paginationControl:

    PaginationControl::__invoke(Paginator $myPaginator, $scrollingStyle, $partial, $params);
    

    Таким образом, в вашем частичном скрипте или скрипте viewpage для разбиения на страницы вы можете получить доступ ко всем материалам, которые вы передали $paramsпараметру, как вы бы с вашими параметрами, которые вы передаете с вашего контроллера на ваши страницы просмотра или частичный viewhelper.

    Вы можете передать параметр частичному, как используемый маршрут и его маршрут и параметры запроса.

    $this->paginationControl(
        $posts,
        'sliding',
        'application/partial/pagination',
        [
            'route' => 'home',
            'routeParams' => ['lang' => 'it'], 
            'queryParams' => []
        ]
    );
    

    Таким образом, теперь в вашем частичном разбиении на страницы вы можете использовать маршрут, routeParams и queryParams — используемый шаблон — разбиение на страницы элементов .

    <?php
    if (!isset($queryParams)) {
        $queryParams = [];
    }
    if (!isset($routeParams)) {
        $routeParams = [];
    }
    ?>
    
    <?php if ($this->pageCount): ?>
    <div class="paginationControl">
        <?= $this->firstItemNumber; ?> - <?= $this->lastItemNumber; ?>
        <?= $this->translate('of'); ?> <?= $this->totalItemCount; ?>
    
        <!-- First page link -->
        <?php if (isset($this->previous)): ?>
            <a href="<?= $this->url(
                $this->route,
                $routeParams,
                ArrayUtils::merge($queryParams, ['query' => ['page' => $this->first]])
            ); ?>">
                <?= $this->translate('First'); ?>
            </a> |
        <?php else: ?>
            <span class="disabled"><?= $this->translate('First') ?></span> |
        <?php endif; ?>
    
        <!-- Previous page link -->
        <?php if (isset($this->previous)): ?>
            <a href="<?= $this->url(
                $this->route,
                $queryParams,
                ArrayUtils::merge($queryParams, ['query' => ['page' => $this->previous]])
            ); ?>">
                &lt; <?= $this->translate('Previous') ?>
            </a> |
        <?php else: ?>
            <span class="disabled">&lt; <?= $this->translate('Previous') ?></span> |
        <?php endif; ?>
    
        <!-- Next page link -->
        <?php if (isset($this->next)): ?>
            <a href="<?= $this->url(
                $this->route,
                $routeParams,
                ArrayUtils::merge($queryParams, ['query' => ['page' => $this->next]])
            ); ?>">
                <?= $this->translate('Next') ?> &gt;
            </a> |
        <?php else: ?>
            <span class="disabled"><?= $this->translate('Next') ?> &gt;</span> |
        <?php endif; ?>
    
        <!-- Last page link -->
        <?php if (isset($this->next)): ?>
            <a href="<?= $this->url(
                $this->route,
                $routeParams,
                ArrayUtils::merge($queryParams, ['query' => ['page' => $this->last]])
            ); ?>">
                <?= $this->translate('Last') ?>
            </a>
        <?php else: ?>
            <span class="disabled"><?= $this->translate('Last') ?></span>
        <?php endif; ?>