読者です 読者をやめる 読者になる 読者になる

fuelphpでhaml導入したった

PHP FuelPHP Haml Twig MtHaml Parser

またfuelphpネタです。



fuelphphamlつかおうって話になり、とりまいれることになったんだけど、なんでこんなつまづいたのか...



無力すぎて泣ける... 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


ありがとうございます!