2016-12-27 4 views
0

Вот мой текущий код внутри index.phtml viewscript:Получить параметр языка внутри Zend Paginator ahref ссылок (активные ссылки)

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

Я хотел бы передать параметр :lang в этом paginationControl вызов таким таким образом, что маршрутизатор и html-результаты показывают it lang внутри 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

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

ответ

0

Ну, это зависит от того, как вы настраиваете свой paginationControl частично или сценарий просмотра.

Параметры 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 - Template used - Item pagination.

<?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; ?>