Передача параметров для zend paginationControl partial

У меня есть страница с большим количеством данных, включая 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 указанную форму.

 $this->id 

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

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

Ваш примерный код не показывает, как заполняется $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 .

Я прошел одну и ту же проблему, поэтому я использовал код, приведенный ниже, в частичном 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.'&'; } return $str; } 

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

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

Вместо

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

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