sfTwigPluginを弄ってる
Twigいいよ!とかいってたけど、それを使うフレームワーク書いてる精神的な余裕がなくなったので、symfony1.4と組み合わせて使えないかしらといいろごにょってみた。
オリジナルはここのなんだけど10月くらいに更新をやめてしまってる。
とうぜん絶賛開発中だったTwigがそのままでは動くわけもなくforkしてみた。
とりあえず試してみたいひとは下記な感じで
使い方
インストール
$ cd {PROJECT_DIR]/plugins/ $ git clone git://github.com/cocoiti/sfTwigPlugin.git $ cd sfTwigPlugins/ $ git submodule init $ git submodule update
設定
マニュアルにあるとおり。project本体か各アプリケーションのconfigディレクトリにmodule.ymlをおけばいい
all: view_class: sfTwig partial_view_class: sfTwig
テンプレート
たとえば、アプリケーションfrontendだったら下記のようなファイルを作る
{PROJECT_DIR]/apps/frontend/templates/layout.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> {{ ""|include_http_metas() }} {{ ""|include_metas() }} {{ ""|include_title() }} <link rel="shortcut icon" href="/favicon.ico" /> {{ ""|include_stylesheets() }} {{ ""|include_javascripts() }} </head> <body> {{ sf_content }} </body> </html>
あとは各モジュールのテンプレート側にいつもの通りファイルを置くことになる。
現在はレイアウト側のファイルをモジュール側のファイルは継承できない。
思ったこと
symfony標準helperに関しては、filterで定義しているらしく変換コードがあったのだが、
このシェルが動かないのでPHPで書き直した、symfonyコマンドから実行できるタスクもあるがこちらは弄ってない。
というか、下記が記述ダサすぎる。TwigはcoreなExtensionを書くの面倒っぽいのでそのせいかもしれないし僕の知らない別の構文があるのかもしれない。
{{ ""|include_http_metas() }}
下記みたいな感じで書くようにするのがいいかDjango参考にするか考えてる。
{% symfony::include_http_metas() %}
個人的にはレイアウト側のディレクトリにすべてのテンプレートファイルを配置して、アプリケーションが書き換えたいところ(formとかエラーメッセージ)だけ継承して使うという形を想定しているの
で現状の仕組みではそれを実現できない。
というか、元の作者もsfPHPView置き換えただけだよみたいなこといってたのでそれほどノリノリじゃないっぽいので、もうちょっとごにょごにょするか、がつっと別のものを作りたい。
その時の名前が悩ましい。