Почему paginator не запоминает мои пользовательские параметры при переходе на страницу 2? - PullRequest
12 голосов
/ 29 сентября 2008

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

Например:

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

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

Ответы [ 6 ]

11 голосов
/ 29 сентября 2008

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

$ paginator-> Параметры (массив ( 'URL' => $ this-> passedArgs));

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

4 голосов
/ 19 мая 2011

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

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

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

0 голосов
/ 21 июня 2009

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

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

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

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

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

и Торт потерял мои параметры

У вас есть альтернативный метод?

0 голосов
/ 01 июня 2009

Варианты здесь - хорошее руководство

0 голосов
/ 29 декабря 2008

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

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

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

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

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

перед $ paginator-> prev ('<< Previous' stuff. </p>

Выполнение этого сделало следующую ссылку на paginator похожей на " ... / страница: 1 / start_date: 2000-01-01% 2000: 00: 00 / end_date: 3000-01-01% 2023: 59: 59 / payments_recieved: 1"

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

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

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

0 голосов
/ 09 декабря 2008

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

...