fuelphpでhaml導入したった
またfuelphpネタです。
fuelphpでhamlつかおうって話になり、とりまいれることになったんだけど、なんでこんなつまづいたのか...
無力すぎて泣ける... orz
ドキュメント読んでわかんなかったところなど、なかなかつまづいたのでメモ。
まず、公式ドキュメントではhaml使うなら、ドライバーなんもないからcomposerから"必要なやつ"入れてね!的なことが書いてあったので、pakagistにあるmthamlをいれた。
まずここ。
mthaml使おうとしたとき、 既存のものだとParser\View_HamlTwigをつかうことになりーの、自ずとtwigも一緒に使うことになると。
Parser\View_HamlTwigって、継承関係が Parser\View < Parser\View_Twig < Parser\View_HamlTwig になってる。
Parser\View_Hamlあるんだけど、こいつ使うなら、fuel/package/config/parser.phpをみると、PHamlPを使わないとあかんらしい。(Parser\View_Haml != Parser\View_HamlTwig?)
mthamlの方が、packagistにあるし、twigも勉強できる良い機会!とか無理矢理ポジティブに考えて、Parser\View_HamlTwigを使う事に。
次。
sample.mthamlとかいうviewファイルがあったとする。
デフォではviewファイルの拡張子 .mthamlのやつがあれば、 Parser\View_HamlTwig::forge("sample")で表示してくれるような雰囲気を感じていたのですが。。。
で、できね。。。orz
とりま最低限表示されるところまでいこうと思い、やった対策。
1. Parser\View_HamlTwig::forge("sample.mthaml")のように、拡張子もちゃんと書く。
2. fuel/app/configにparser.phpを追加。
<?php return array( 'extensions' => array( 'mthaml' => 'View_HamlTwig', // ① default: 'mthaml' => array('class' => 'View_HamlTwig', 'extension' => 'twig'), ), 'View_HamlTwig' => array( 'environment' => array( // ② default: true 'auto_escaper' => false, 'escape_html' => false, 'escape_attrs' => false, ), ), );
デフォのまんまだと、
① 内部でsample.twigを探しにいって、んなもんねーよでオワタ
② html系の文字がエスケープ処理されて、えらいもん表示される
以上。
動いてよかった(´・ω・`)
P.S. fuelphpでtwig使うとき、Twig_Fuel_Extensionがデフォってて、
<?= Asset::img("sample"); ?>
てのが
{{ asset_img("sample") }}
とか、使えるようになってる!!
すばらしかー
...と、思いきや、Twig_Fuel_Extensionの中身みると、足らないメソッドがある。。。orz(ex. Form::csrf()とか)
ここらへんの設定方法が、詳細に書かれているブログを発見しますた!
参考:
FuelPHPでTwig Extension #FuelPHPAdvent2013
ありがとうございます!