我正在使用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()
方法获取其网址。所以有些事情似乎不对。
任何人都知道发生了什么事?
答案 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'))
);
虽然看起来很脏,但必须得到这样的结果。