【CakePHP3/loadmodel】Modelの数だけloadModelを記述したくない場合は、AppControllerに関数を追加してしまおう。
今回は、CakePHP3系でloadModelを複数書きたくない場合にloadModels関数を作成し、
1行で完結させる方法を記していきます。
1.今回やりたい事
UsersContoller.phpでloadModels関数を使用し、1行で指定したModel全てを使用可能にする。
2.AppControllerでloadModels関数を記述
AppControllerに記述し、どのxxControllerでもloadModelsを使用できるようにします。
AppController.php <?php // 複数モデルの読み込み protected function loadModels($models=[]) { foreach ($models as $model) { $this->loadModel($model); } } ?>
3.UsersControllerにloadmodelsの記述
UsersController.phpでloadModels関数を使用します。
今回は、initialize関数内に記述します。
UsersController.php <?php public function initialize() { parent::initialize(); $this->loadmodels(['Departments', 'Companies']); $this->loadmodels(['Model名}', ['Model名']); } ?>
loadModelとloadModelsの記述比較
UsersController.php <?php public function initialize() { parent::initialize(); $this->loadmodels(['Departments', 'Companies']); $this->loadmodel('Departments'); $this->loadmodel('Companies'); } ?>
個人的には、loadModels関数を作成して、一気に読み込んだ方が楽かなと思ってます。