CakePHPでシステム構築しているとき、Viewの中で表示をコントローラーやアクションによって分岐したい場合があります。

例えば共通の部分(ナビゲーションやサイドメニューなど)で、現在表示している場所を示すときにclassでactiveをつけて装飾を適用したりする場合、現在表示してるコントローラ名を取得し、if文で分岐して「active」という文字を出力するとか。

ただ、いつもそのコントローラ名やアクション名を取得する方法をいつも忘れてしまうので、よく使うものとして記録します。

$this->request->getAttribute('params')

これにより、コントローラー、アクション、そしてパス、ゲット値まで取得が可能。

例
localhost/hogehoge/mugumugu/1/edit/30?request=test&question=answer

上記をgetAttributeで取得すると以下のような情報が取得できます。

'controller' => 'hogehoge',
'action' => 'mugumugu',
'pass' => [
  (int) 0 => '1',
  (int) 1 => 'edit',
  (int) 2 => '30',
],
'?' => [
  'request' => 'test',
  'question' => 'answer',
]

今回は自分はコントローラー名とアクション名だけが欲しかったのですが、テンプレートファイルの上部に取得して何かしら利用する場合には便利です。

ちなみに、他の値は要らず、コントローラーとアクションだけでいいよって場合は以下の方法で取得が可能です。

$this->request->getParam('controller');
$this->request->getParam('action');

$ctr = $this->request->getParam('controller');
echo $ctr; // hogehoge
$act = $this->request->getParam('action');
echo $act; // mugumugu

もしゲット値を取得したい場合は別の方法でも取得が可能のようです。むしろこっちが主力なのかも?

$this->request->getQuery(‘*****’);

先ほどのURLを例えとするならば、下記のような値を取得できるそう。

echo $this->request->getQuery('request'); // test

URLから取得した値は色々な場面で使う事もあるので取得したい場合はこれらを利用してみましょう。