частичная передача параметров в zend paginationControl

#php #zend-framework #pagination #partial

#php #zend-framework #разбивка на страницы #частичная

Вопрос:

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

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

мой вызов paginationControl:

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

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

и моя частичная разбивка на страницы:

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

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

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

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

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

и я хочу $url иметь указанную форму.

Ответ №1:

 $this->id 
  

Ответ №2:

Эй, попробуйте это, это обязательно сработает…..

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

Комментарии:

1. по какой-то причине $param пуст в моем case…@vredniy ответ сработал для меня.

2. приведенный выше метод $param[] будет работать только там, где был задан массив с этим значением и ключом. $this->id сработало для вас, потому что у вас есть набор объектов singleton $this

Ответ №3:

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

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

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

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

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

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

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

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

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

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

Ответ №4:

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

Я создал функцию в файле частичного просмотра paginator ( 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.'amp;';
    }
    return $str;
}
  

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

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

Вместо

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

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