開発したアプリなど一覧

CakePHP でログイン状態によってレイアウトファイルを切り替える。

記事内にアフィリエイトリンクを含む場合があります

ログイン状態によって読み込むレイアウトファイルを切り替えたいなーと思ってぐぐったが

$this->render(null,'hoge',null);

というドキュメントにある事しか出てこなくてこれをアクション毎に設定するのはだるいなーと思っていた。

しかしぐぐっても出てこないときはソースを見る。
grepした結果、renderメソッドは cake/libs/view/view.php 内で定義されている様だ。

# cake/libs/view/view.php var $layout = 'default';

function render($action = null, $layout = null, $file = null) { # 省略

if ($layout === null) { $layout = $this->layout; }

layout のデフォルト値を自分で指定してやれば動くんじゃねーか?
と思って コントローラの beforeFilter に以下の様に書いたら望みどおりの動きをした。よかったよかった。

function beforeFilter() { $this->set('auth_user',$this->Auth->user()); Security::setHash('sha1'); $this->Auth->allow('index','view','user'); if ($this->Auth->user()) { $this->layout = 'user'; } else { $this->layout = 'default'; } }

Sponsored Link

コメント

タイトルとURLをコピーしました