タイトルの通り、src/Controller/Component/
直下以外の場所にComponentを置いてControllerからloadしたい場合。なぜか公式にやり方が書いていなかったのでメモ。
バージョン
CakePHP 3.x
書き方
例えばsrc/Controller/Component/SubDir/AbcdComponent
をloadしたい場合は以下のように書けば良い
// In Your Controller $this->loadComponent('Abcd', [ 'className'=> '\App\Controller\Component\SubDir/AbcdComponent' ]);
備考
上記でちゃんと動きますが表記が冗長な感じですし、公式に載っていないということはおそらく推奨されていないということなので、大人しくComponent/直下に置きましょう。Componentの数が増えたりNamespaceを切りたいということであればPluginにしてしまうのが良さそうです。