モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

CakePHPでTwigView使う時FormやHtmlヘルパーが使えない

CakePHPからtwigを使うためにTwigViewというプラグインがあります。

predominant/TwigView · GitHub
https://github.com/predominant/TwigView


とりあえずTwigViewインストール方法まとめ

TwigView自体はgitでsubmoduleとして組み込むのが良いと思います。

> git submodule add git://github.com/predominant/TwigView.git app/Plugin/TwigView
> cd app/Plugin/TwigView
> git submodule update --init

app/Config/core.php にTwigViewのキャッシュファイル保持位置の設定追加

define('TWIG_VIEW_CACHE', APP . 'tmp');

app/Config/bootstrap.phpプラグインの読み込み設定を追加

CakePlugin::loadAll();

app/Controll/AppController.php にTwigViewを組み込む設定追加

class AppController extends Controller  {
    public $viewClass = 'TwigView.Twig';
}

これでとりあえず使えるようになりました。


…が、普通にテンプレートは動いたのですが、FormヘルパーやHtmlヘルパーを使おうとすると動いてくれない、という問題が起きました。
それで調べてみたところ、FormヘルパーやHtmlヘルパーは標準だと自動で読み込んで使ってくれるのですが、TwigViewの場合だとそうならないため、現在のところ明示的にヘルパーの指定をしてやる必要があるようです。

Lazy loading of Helpers · Issue #13 · predominant/TwigView · GitHub


なので、必要に応じてコントローラー内で下記のようにヘルパー指定を追加してやります。

public $helpers = array('Html', 'Form');


が、先日TwigView作者のpredominantさんから反応があって

There is a way to fix this. Tinkering at the moment.

と書かれているため、近いうちに対応がされるのではないかと期待しています。


(関連)

CakePHPでTwigView使う時flashが表示されない問題 - モーグルとカバとパウダーの日記
http://d.hatena.ne.jp/stealthinu/20130627/p1