Почему пагинатор не запоминает мои пользовательские параметры, когда я перехожу на страницу 2?

StackOverflow https://stackoverflow.com/questions/147995

  •  02-07-2019
  •  | 
  •  

Вопрос

При использовании помощника paginator в представлениях cakephp он не запоминает части URL-адреса, специально предназначенные для моего использования.

Например:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc

здесь модераторы — это параметр, который помогает мне фильтровать по этому типу.Но нажатие ссылки на страницу не приведет к включению этой ссылки.

Это было полезно?

Решение

В дополнение к ответу Александра Морланда выше стоит помнить, что синтаксис изменился в CakePHP 1.3 и теперь выглядит следующим образом:

$this->Paginator->options(array('url' => $this->passedArgs));

Это описано далее в пагинация в представлениях раздел книги CakePHP.

Другие советы

Секрет заключается в добавлении этой строки в ваше представление:

$paginator->options(array('url'=>$this->passedArgs));

(Я создал этот вопрос и ответ, потому что это часто задаваемый вопрос, и мне все время приходится искать ответ, так как я не могу его вспомнить.)

$this->passedArgs — предпочтительный способ сделать это из представления.

Вы спасли меня!Это мне очень помогло, спасибо.

Мне нужен был способ передать параметры, которые я изначально отправил по почте ($this->data), компоненту подкачки, чтобы мой пользовательский запрос продолжал их использовать.

Вот что я сделал:

на мой взгляд я поставил

$paginator->options(array('url'=>$this->data['Transaction']));

перед $paginator->prev('<<Предыдущий' материал.

Это сделало следующую ссылку на пагинаторе, как ".../Page: 1/start_date: 2000-01-01%2000: 00: 00/end_date: 3000-01-01%2023: 59: 59/payments_reced: 1 "

Затем на моем контроллере мне просто нужно было получить параметры и поместить их в $this->data, чтобы моя функция продолжалась как обычно:

foreach($this->params['named'] as $k=>$v)
{
    /*
     * set data as is normally expected
     */
    $this->data['Transaction'][$k] = $v;
}

Вот и все.Пейджинг работает с моим пользовательским запросом.:)

Варианты здесь хорошие наводки...Вы также можете получить дополнительную информацию о разбиении на страницы cakePHP на сайте cakephp.org/view/166/Pagination-in-Views.

С помощью этого параметра «url» вы можете поместить предпочитаемую строку только перед нумерацией строк в URL-адресе.

если я использую эту технику:

$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);

Я получаю только:

url/controller/action/?my_get1=1&my_get2=2/sort:.../...

и Cake потерял мои параметры получения

У вас есть альтернативная техника?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top