自前でアクセスログを記録する機能を作るときに、Controllerでセットした値(ページタイトルのtitle_for_layout)をログに含めたいと思い調べた。
title_for_layoutは通常コントローラのアクションでセットするためbeforeFilter()では取得できないので、beforeRender()にログ保存の処理を入れる。
とり方はこう。
$value = $this->viewVars['title_for_layout'];
ちなみに、beforeRnender()時点の$thisの中身は次のようになっている。
exampleController Object
(
[name]...コントローラ名
[uses]...使用するモデル
[components]...使用するコンポーネント
[helpers]...使用するヘルパー
[here]...現在のパス(アクセスログに使ってる)
[webroot]
[action]...アクション(method)名
[params] => array(
[controller]
[action]
[named]
[pass]
[plugin]
[form]...送信されたフォームデータ
[url]
[isAjax]...RequestHandler使用時のajax判定?
[paging] ...paginater使用時に取得パラメータ
)
[data]...フォーム使用時
[paginate]...paginater使用時の設定パラメータ
[viewPath]...viewファイルの格納パス?(/views/以下)
[layoutPath]...layoutファイルの格納パス?
[viewVars]...controllerでsetした値
[modelNames]...その時点で使用しているモデル??
[base]
[layout]...使用するviewのlayout
[autoRender]...自動的にviewを出力するかどうかのフラグ
[autotLayout]...自動的にレイアウトを出力するかどうかのフラグ?
...あと使わないので省略
)