CakePHP のコンポーネントでコントローラの関数や定義したモデルや変数などを扱う

CakePHP でコントローラの関数やコントローラ内で定義したモデルや変数を扱いたい場合があります。
その際はコンポーネントで initialize() メソッドを実行して $controller を呼び出せば良いです。

例えばコンポーネント内でリダイレクトをしたい場合は以下のようにします。

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class LoginComponent extends Object
{
	function initialize(&$controller) {
		$this->controller =& $controller;
	}
 
	function login($value)
	{
		$this->controller->redirect('success');
	}
}

このような感じでモデルにもアクセスすることができます。

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class LoginComponent extends Object
{
	function initialize(&$controller) {
		$this->controller =& $controller;
	}
 
	function login($params)
	{
		$this->controller->Member->loginAuth($params);
	}
}

以下のページがそのものズバリで参考になりました。
独自のコンポーネントを作成する :: コンポーネント :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook

コメント

コメントは受け付けていません。