2011-09-12 13 views
4

私は次のコードを使用してKohanaの3.2でリファラURIを取得しようとしています:関数はNULLを返ししかしKohanaの3.2 - ゲットリファラURI

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

、私はそれが私が左のページを返すように期待していこれに行くために。

それはうまくいくはずです...もしそうなら、何が欠けているのか、間違っていますか?

これはコントローラで実行されています。ここ

ドキュメント: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を取得できるようになりました。 atmaにより示唆されるように

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

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

またクリーナーより多くのネイティブの解決策は次のとおりです。

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

なぜあなたはコナナの方法でそれをしないのですか? 'Request :: initial() - > referrer()' - 参照元を含む副要求からの最初の要求に達する簡単な方法です。 – atma

+0

そのようにすることについては知らなかった。それを試して、それは動作します。今は2つの解決策があります。 = D – diggersworld

+0

@atma私はあなたがコメントではなく答えとしてそれを置くことをお勧めします。人々はそれをアップヴォートすることができ、彼のソリューションよりも優れているとdiggersworldが受け入れる可能性があります。 –

関連する問題