Paginator :: url给出与Paginator :: link不同的结果

时间:2011-08-04 13:19:24

标签: cakephp

我正在使用CakePHP 1.3,根据docs 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()方法获取其网址。所以有些事情似乎不对。

任何人都知道发生了什么事?

2 个答案:

答案 0 :(得分:1)

在蛋糕核心代码中,它不直接从url()返回。我不太了解核心代码,但我猜Paginator-&gt;链接维护所有非paginator命名参数,而Paginator-&gt; url则不然。

如果你想让url()做同样的事情,请使用

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

或$ this-&gt;传递了Arg以保留所有参数。

答案 1 :(得分:0)

如果所有其他方法都失败了,我可以使用link()方法并从中提取URL,如下所示:

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

虽然看起来很脏,但必须得到这样的结果。