2014年6月30日月曜日

[CakPHP]ControlloerでsetするとDebugKitのVariablesタブで捕捉されないことがある

※version2.4.9の話

ControllerのCallback関数には、

Controller::beforeFilter()
Controller::beforeRender()
Controller::afterFilter

があるけど、beforeRenderとafterFilterでController::setしてもDebugKitのVariablesタグで捕捉されることはない。afterFilterでsetしてもViewで使えないので全く意味はないが。
beforeRenderでsetしたいケースはあると思う。たとえば、Authの情報をどのページでもsetしているが、logout画面ではする必要がない(したくない)ので、その場合はbeforeRenderにset処理を入れておく。すると、beforeRender以前にlogoutのロジックが終わっているので、Auth情報はセッションからなくなっているので、setせずに済む。

これをbeforeFilterでsetしていると、logout処理の前でセッションからAuth情報がある状態なのでsetされてしまい、View画面で使われてしまったりする。「ログアウトしました。」画面なのに、「マイページ」とか表示されてたりする。

話はそれたけど、beforeRenderでController::setしてもDebugKitのVariablesからは見えないけど、ViewではきちんとRenderされます。


0 件のコメント:

コメントを投稿