Symfony 1.4でのTwigテンプレートの統合

TwigをSymfonyに統合しようとすると、次の問題が発生しました:実質的に情報がなく、統合ガイドがありません。Twigを操作する方法を説明するミニTwigドキュメントがありますが、Symfonyで操作する方法を教えません。 私は少し検索して、グーグルグループで尋ねなければなりませんでした。



誰かがこの資料が役立つと思うことを願っています。





sfTwigPluginをダウンロードします (SymfonyヘルパーをTwigに「インポート」する拡張機能があります。sfPHPViewをオーバーライドするビュークラスがあります)。



ここで説明する手順に従ってください。



プラグインをディレクトリ/ lib / vendor / symfony / lib / plugins / sfTwigPlugin /に配置します。



ProjectConfiguration.class.phpに含めます:



$ this ->enablePlugins( 'sfDoctrinePlugin' , 'sfTwigPlugin' ); <br><br> * This source code was highlighted with Source Code Highlighter .







プラグインをtwig-project.orgから/ lib / vendor / Twigディレクトリに保存します。



/ configディレクトリで、module.ymlファイルを作成し、Twigテンプレートページの出力を担当するViewクラスを定義します。



all:<br> view_class: sfTwig<br> partial_view_class: sfTwig<br> <br> * This source code was highlighted with Source Code Highlighter .







テンプレートが出力するアクションは次のようになります。



function executeIndex() {<br> // Symfony <br> require_once 'path_to_symfony_project/lib/vendor/symfony/lib/helper/AssetHelper.php' ;<br> require_once 'path_to_symfony_project /lib/vendor/symfony/lib/helper/TagHelper.php' ;<br> <br> $loader = new Twig_Loader_Filesystem( '/var/www/symfony-test/html/apps/blahg/modules/posts/templates' );<br> <br> $twig = new Twig_Environment($loader, array( 'cache' => false ));<br> <br> // <br> $lexer = new Twig_Lexer($twig, array(<br> 'tag_comment' => array( '/*' , '*/' ),<br> 'tag_block' => array( '[' , ']' ),<br> 'tag_variable' => array( '{' , '}' ),<br> ));<br> $twig->setLexer($lexer);<br> <br> // Symfony <br> $twig->addExtension( new Asset_Twig_Extension());<br> $twig->addExtension( new Tag_Twig_Extension());<br> <br> // <br> $ this ->postss = Doctrine::getTable( 'Posts' )<br> ->createQuery( 'a' )<br> ->leftJoin( 'a.Comments c' )<br> ->execute();<br> <br> // <br> $template = $twig->loadTemplate( 'indexSuccess.html' );<br> <br> // HTTP <br> $ this ->getResponse()->setContent($template->render(array( 'postss' => $ this ->postss->getData())));<br> <br> // <br> return sfView::NONE;<br>} <br><br> * This source code was highlighted with Source Code Highlighter .







これはアクションの自給自足の例ですが、将来的にはヘルパーのインクルードとテンプレートタグの再定義をレンダリングする必要があります。



ディレクトリ/ apps / <project_name> / modules / <module_name> / templatesで、次を作成します:



layout.php



<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <br> < html xmlns ="http://www.w3.org/1999/xhtml" xml:lang ="en" lang ="en" > <br> < head > <br> { 'main'|use_stylesheet('first') }<br> { ''|include_stylesheets }<br> </ head > <br> < body > <br> [ block content ][ endblock ]<br> </ body > <br> </ html > <br><br> * This source code was highlighted with Source Code Highlighter .







indexSuccess.html



[ extends "layout.html" ]<br><br>[ block content ]<br><br> < h1 > Postss List </ h1 > <br> < table class ="posts-list" > <br> < thead > <br> < tr > <br> < th > Id </ th > <br> < th > Title </ th > <br> < th > Text </ th > <br> < th > Modified </ th > <br> < th > Comments count </ th > <br> </ tr > <br> </ thead > <br> < tbody > <br> [ for posts in postss ]<br> < tr > <br> < td > { posts.id } </ td > <br> < td >< a href ="" > { posts.title } </ a ></ td > <br> < td > { posts.text } </ td > <br> < td > { posts.modified_ } </ td > <br> < td > { posts.Comments.count } </ td > <br> </ tr > <br> [ endfor ]<br> </ tbody > <br> </ table > <br><br>[ endblock ] <br><br> * This source code was highlighted with Source Code Highlighter .







symfonyヘルパーはTwigフィルターとして動作するはずです。



これまで、いくつかのAssetHelperヘルパーを機能させることはできませんでした。例えば:

{ 'main'|use_stylesheet('first') }

{ ''|include_stylesheets }






view.yml configで指定されたスタイルをロードしようとした場合にのみ連携します

{ ''|include_stylesheets }





ページ上のタグは表示されません。



PS SymfonyとTwigのトピックは私にとって新しいものです。だから誰かに貴重なアドバイスがあれば、喜んで聞いてくれます。 ストーリーの続きが興味深い場合は、新しいタスクを実行する過程で別の記事を書きます。



All Articles