Paginator :: URL дает другие результаты, чем Paginator :: ссылка - PullRequest
1 голос
/ 04 августа 2011

Я использую CakePHP 1.3, в соответствии с документами url():

возвращает полную строку URL-адреса нумерации страниц для использования в нестандартных контекстах (например, JavaScript)

Это то, что мне нужно, JS. Однако, если URL моей текущей страницы:

/ админ / заказы / индекс / страница: 1 / с: 2011-08-16

и я разместил это на своей странице:

echo $this->Paginator->url(array('from'=>'FROM_PLACE_HOLDER'));
echo $this->Paginator->link('test',array('from'=>'FROM_PLACE_HOLDER'));

Результаты:

/admin/orders/index/page:1/from:FROM_PLACE_HOLDER
<a href="/admin/orders/index/page:1/to:2011-08-16/from:FROM_PLACE_HOLDER">test</a>

Если вы заметили, метод link() поддерживает параметр от до , а метод url() сбрасывает его.

Странная часть: я посмотрел на источник для метода link(), и он вызывает метод url(), чтобы получить его URL. Так что, кажется, что-то не так.

Кто-нибудь знает, что происходит?

Ответы [ 2 ]

1 голос
/ 05 августа 2011

В базовом коде торта он не возвращается напрямую из url (). Я недостаточно хорошо знаю основной код, но я предполагаю, что Paginator-> link поддерживает все именованные параметры, не относящиеся к paginator, а Paginator-> url - нет.

Если вы хотите, чтобы url () делал то же самое, используйте

$this->Paginator->url(array_merge($this->params['named'], array('from'=>'FROM_PLACE_HOLDER')));

или $ this-> passArgs для сохранения всех аргументов.

0 голосов
/ 04 августа 2011

Если ничего не помогает, я могу использовать метод link () и извлечь из него URL-адрес следующим образом:

$url = preg_replace(
    '/.*href="([^"]+)".*/', 
    "$1", 
    $this->Paginator->link('test',array('from'=>'FROM_PLACE_HOLDER'))
);

Кажется довольно грязным, чтобы привести к чему-то вроде этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...