1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【CakePHP2】requestActionがSessionに悪さをしている気がする

Posted at

#ページの共通部分に通知を出したい

requestActionを使って通知を取得していた

View/ElementsのHeader.ctpからrequestActionを使って通知取得用のメソッドを呼び出していた。よくある使い方だと思うし、特に問題なく動いているように見えた。

AuthComponentを併用した場合の再ログインで挙動がおかしい

Sessionが切れて自動ログアウトをした後再度ログインすると、requestActionで指定したURLにアクセスしてしまう。(action内では$this->request->params['requested']で判定しているのでエラーが出る。)これは困った。
何回か試してみたが、起こるときと起こらないときの差がわからず、うまく再現できない。
でもrequestActionが悪いに違いないので、使わないことにした。
(もしかすると、AuthComponentの設定が悪いのかもしれないが。)

どうせヘッダーで読み込むならAppControllerに書いてしまえ

ほとんどのページで通知領域は表示するので、AppControllerに共通処理として埋め込むことにした。
でもログイン用のlayoutで読み込む必要はないので、layoutで条件分岐したい。そうなると、beforeFilterでは各actionの$this->layoutが反映されていないから、beforeRenderあたりに書くことになるのだろうか。
結局以下のように書くことでrequestActionと同様の結果を得た。

AppController.php
<?php
#省略
	public function beforeRender(){
		if($this->layout === 'default'){
			$this->set('notifications', ClassRegistry::init('Notification')->find('all'));
		}
	}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?