Почему пагинатор не запоминает мои пользовательские параметры, когда я перехожу на страницу 2?
-
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 потерял мои параметры получения
У вас есть альтернативная техника?