シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]Controllerでsetした値をbeforeRenderで取得する

自前でアクセスログを記録する機能を作るときに、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]...自動的にレイアウトを出力するかどうかのフラグ?
  ...あと使わないので省略
)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする