передача параметров в Zend PaginationControl частично - PullRequest
9 голосов
/ 21 апреля 2011

У меня есть страница, которая отображает много данных, включая Zend_Paginator.Действие страницы - /po/fetch?id=someID.

. Я хочу передать параметр "id" в zend paginationControl, чтобы ссылки на страницы были похожи на /po/fetch?id=someID&page=somePage.к сожалению, я нигде не могу найти объяснение того, как я могу передать этот параметр в paginationControl.

мой вызов paginationControl:

echo $view->paginationControl($paginator, 'Sliding',$control, $params);

где $params = array('id' => someID

имоя частичная нумерация страниц:

<a href=<?= $url.'&page='.$this->first; ?> id="first"> First </a>

<a href=<?= $url.'&page='.$this->previous; ?> id="previous">&lt; Previous</a>

<?php 
foreach($this->pagesInRange as $page) {
?>
        <a href="<?= $url.'&page='.$page; ?>">.$page.</a>  | ;
<?php 
}
?>

<a href=<?= $url.'&page='.$this->next;?> id="next"> Next &gt;</a>

<a href=<?= $url.'&page='.$this->last; ?> id="last"> Last </a>

, и я хочу, чтобы $url имел указанную форму.

Ответы [ 4 ]

10 голосов
/ 22 апреля 2011
$this->id 
9 голосов
/ 22 апреля 2011

Эй, попробуй это, оно наверняка сработает .....

<a href="<?php echo $this->url(array('page' => $page,'id'=>'1')); ?>">
    <?php echo $page; ?>
</a>

Здесь 1 задается как идентификатор, который необходимо передать идентификатору, который вы хотите ....... Как

<a href="<?php echo $this->url(array('page' => $page,'id'=>$param['id'])); ?>">
        <?php echo $page; ?>
    </a>
3 голосов
/ 22 апреля 2011

Ваш пример кода не показывает, как заполняется $url, но вы действительно должны использовать URL ViewHelper .

Так, например - ваша предыдущая ссылка станет:

<a href=<?php echo $this->url(array('page' => $this->previous)); ?> id="previous">&lt; Previous</a>

Будет возвращен правильный URL-адрес текущей страницы с параметром page, установленным на $this->previous. Таким образом, если текущий URL равен /users/view?foo=bar&page=5, приведенный выше код выведет /users/view?foo=bar&page=4 для предыдущей ссылки. Обратите внимание, как сохраняются все параметры запроса, которые уже присутствуют.

Итак, если параметр id уже присутствует в URL-адресе, отображающем ваш paginator, приведенный выше код будет «просто работать». Однако, если вам все еще нужно добавить параметр id, вы можете сделать это следующим образом:

<a href=<?php echo $this->url(array('page' => $this->previous, 'id' => $this->id)); ?> id="previous">&lt; Previous</a>

Чтобы продолжить с нашего предыдущего примера, этот код выведет следующий URL: /users/view?foo=bar&page=4&id={someId}

Вот справочная документация для URL ViewHelper:

url ($ urlOptions, $ name, $ reset): Создает строку URL на основе именованного маршрут. $ urlOptions должен быть ассоциативный массив пар ключ / значение используется определенным маршрутом.

Последнее замечание - $reset (третий) параметр URL ViewHelper очень пригодится. Поведение по умолчанию - сохранить все параметры запроса текущего запроса, но вызов $this->url(array(), 'default', true) с true для параметра $reset в основном удалит все параметры, кроме тех, которые вы указали в $urlOptions.

0 голосов
/ 28 апреля 2016

Я столкнулся с той же проблемой, поэтому я использовал код, приведенный ниже, в частичном разбивке на страницы.

Я создал функцию в файле частичного просмотра на разбивке на страницы (control.phtml) или может отличаться.

function queryStr($p){
    $params = $array = Zend_Controller_Front::getInstance()->getRequest()->getQuery();
    $params['page']=$p;
    $str='?';
    foreach($params as $k=>$v){
        if($v)
           $str .= $k.'='.$v.'&';
    }
    return $str;
}

Теперь для ссылок я использую приведенный ниже код.

<a href="<?php echo queryStr($page); ?>">

Вместо

<a href="<?php echo $this->url(array('page' => $page)); ?>">

Я уверен, что это будет полезно и другим.

...