2011-09-12 28 views
4

我嘗試使用下面的代碼來獲得的Kohana 3.2引薦URI:的Kohana 3.2 - 獲取引用URI

$referrer = $this->request->referrer(); 
var_dump($referrer); 

但是該函數返回NULL,我期待它返回我離開頁面去這個。

這是它應該如何工作...如果是的話,我錯過了什麼或做錯了什麼?

這是在控制器中運行。

文檔瀏覽:http://kohanaframework.org/3.2/guide/api/Request#referrer

+0

貴控制器擴展Controller_Template?如果沒有,它將無法訪問'$ this-> request' – Joe

+0

它擴展了我自己的控制器模板,我可以訪問$ this-> request。 – diggersworld

+0

這是否擴展了Kohana核心Controller_Template? :) – Joe

回答

3

我是有這個問題由我的Kohana系統的安裝方式是原因。基本上我在我的系統中間有一個routeHandler,它控制着用戶所走的路線。在該腳本中,生成了一個新的請求,然後執行。

發生了什麼事情是創建新的請求對象時,它沒有將引用程序uri添加到它。我添加了下面的代碼,現在我可以在路由過程結束時從控制器獲取引用的uri。

$referrer = $this->request->referrer(); 
$request = new Request($uri); 
$request->referrer($referrer); 

echo $request->execute() 
      ->send_headers() 
      ->body(); 

或者由atma提出了一個更清潔更原生解決方案如下:

Request::initial()->referrer() 
+8

爲什麼你不以kohana的方式做到這一點? 'Request :: initial() - > referrer()' - 一個簡單的方法來達到subrequest中包含referrer的初始請求。 – atma

+0

不知道如何得到它。嘗試了它,它的工作原理。所以現在我們有兩個解決方案。 = D – diggersworld

+0

@atma我建議你把它作爲答案而不是評論,所以人們可以放棄它,如果挖掘者發現它比他的解決方案好,挖掘者世界可能會接受它。 –