2011-08-04 62 views
1

我使用CakePHP 1.3,根據docsurl()方法:分頁程序::網址讓不同的結果分頁程序::鏈接

返回在非標準環境中使用一個完整的分頁URL字符串(即JavaScript的)

這就是我需要它,JS。但是,如果我的當前頁面的網址是:

/管理/命令/指數/頁: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()方法保持 PARAM而url()方法重置它。

奇怪的部分是我看着link()方法的來源,它調用url()方法來獲取它的URL。所以有些東西看起來不正確。

任何人都知道怎麼回事?

回答

1

在蛋糕核心代碼,它不直接從URL返回()。我不知道核心代碼不夠好,但我猜Paginator->鏈接維護所有非分頁程序命名的參數,而Paginator-> URL不。

如果你想要的網址()做同樣的,使用

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

或$這個 - > passedArgs保留所有ARGS。

0

如果一切都失敗,我可以使用link()方法,並從中提取的URL是這樣的:

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

似乎非常髒有導致對這樣的事情雖然。