0

Cakephp 2.1 アプリケーションで少し苦労しています。

リファラーが外部 URL からのものである場合、別のレイアウトをレンダリングしたいと考えています。悲しいことに、これは機能していません:

 if($this->referer(null, true))
     {
        $this->layout = 'lightview';
     }
     else 
     {
        $this->layout = 'default';
     }

これを修正する方法はありますか?

前もって感謝します

4

1 に答える 1

1

ここで論理エラーが発生しました:

$this->referer(null, true) // true as second param: only internal

場合にのみライトビュー レイアウトを返します。

  • リファラーがある (常にそうであるとは限らない)
  • 内部リファラー

したがって、これはおそらくあなたが望むものではありません。

これを簡単に行うことはできません。リファラーがいない場合もあります。たとえ存在したとしても、この人が別の場所から来て、リファラーを「隠した」だけかどうかはまだわからないかもしれません. または、サイトを閲覧しました (ここから内部リファラーを作成します)。

後で確認するために、セッションの最初の訪問時に最初の結果を保存する必要があります。しかし、それでもあなたのアプローチは非常に一貫性がなく、壊れやすい可能性が非常に高いです...

于 2013-01-25T13:37:54.817 に答える