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されます。


1 件のコメント:

  1. Harrah's Cherokee Casino & Hotel - MapYRO
    Find Harrah's Cherokee Casino & Hotel, Best 보령 출장샵 Price (Room Rates) Guarantee ➤ Book online 원주 출장샵 INR 8862 OFF! deal and 대전광역 출장안마 discounts 순천 출장마사지 with 원주 출장안마

    返信削除