Archives by date

You are browsing the site archives by date.

【CakePHP2.4】独自コントローラーを継承した際、ComponentとHelperのマージを制御する。

CakePHPはAppControllerで読み込んだComponent、Helperがそれを継承した子コントローラーのそのものと自動的にマージされる。

しかし継承時、親と子の間に独自で定義したコントローラーを挟んだ場合、独自コントローラー内でのComponent、Helperはマージ対象から外れてしまう。

なので、ユーザーの意図した挙動に修正するために独自コントローラー内で下記変数に少々細工を加える。

App::uses('AppBaseController', 'Controller');

class AppBaseController extends AppController {
	public $components = ['hogeComp'];

	// マージ対象の親クラスを変更する
	protected $_mergeParent = 'AppBaseController';
}

上記の通り、「$_mergeParent」にセットする値を変更することでマージの挙動を変更することが可能。

 

【CakePHP2.4】独自で定義したコントローラーを継承する。

AppControllerではなく独自で作成したコントローラーを継承(extends)したい場合、下記の通り継承先のファイルにて用意したコントローラーを読み込んでやる必要がある。

App::uses('ControllerClassName', 'Controller');

例。

App::uses('AdminBasesController', 'Controller');

class AdminsController extends AdminBasesController {

}

こんな感じ。