[CakePHP3]ControllerからViewを呼び出したい

スポンサーリンク
CakePHP

Formヘルパーの出力テンプレートはsetTemplates()で設定できる。
で、adminルーティングしたときだけ変えたいと思ったのだが、いちいちView内で設定するのが面倒なんで、コントローラーでセットしなおしたい。

ということで、ControllerからViewを呼び出したいんだがどうしたらいいんだ!?

CakePHP3.x

いろいろやってみたが、結論から言うとコントローラーからヘルパーのメソッドを呼ぶのはむりっぽい。
だけど、コントローラーでデフォルトのFormテンプレートの設定を切り替えることは可能。

今回のように、Adminルーティングの時に一括で変えたいような場合はAppController:initialise()メソッドで

if ($this->request->getParam('prefix') === 'admin'){
    $this->helpers['Form']['templates']['inputContainer']='{{content}}';
}

ってな感じでやればいい。
ヘルパーロード時のパラメータ自体は、レンダリングされる前なら動的に変更できるようです。

試してないけど、どうしてもメソッドでやりたいということであれば、
ヘルパー内で別のヘルパーを呼び出すことは可能なので、自作でヘルパーを作ってコールバック(beforeRenderFile)で設定してあげればよさそう。

他のヘルパーの読み込み

[quads id=1]