Yii + Twigが好きなこと:適切なスクリプトを動的に接続する

この記事に触発されました



リソースをどのように使用するのか、なぜこのアプローチが非常に便利であるのかを説明したいと思います。



たまたま、Twigをテンプレートエンジンとして気に入ったのです。



それはちょうど私にそれを注ぐようなものです-最初にCodeIgniterで、次に私が少しクラックした拡張機能(記事の最後にあるリンク)を通してYiiと友達になりました



数千の優れた機能の1つは、次のようなテンプレートの継承です。



layout.twig



<html> <head><title>{% block title %}{% endblock %}</title></head> <body> <h1>, !</h1> {% block content %}{% endblock %} </body> </html>
      
      







index.twig



 {% extends 'layout.twig' %} {% block title %}  {% endblock %} {% block content %}  ?{%endblock%}
      
      







その結果、index.twigをレンダリングするときに、タイトルを付けて、あいさつをより非公式にします。



これで、スクリプトとその他の部分を台無しにするのがいいでしょう。

私は次のようにします-cssimgjsフォルダーはassetフォルダー内にあり、これは既にテーマのあるフォルダー内にあります(cssとimgを別々に公開すると、cssの相対リンクが壊れます)。 メインテンプレートでは、これを行います。

 {% set assetsDir = Yii.app.publishFile('assets') %} {% call Yii.app.clientScript.registerScriptFile( assetsDir~'/js/chosen.jquery.min.js' ) %} {% call Yii.app.clientScript.registerCssFile( assetsDir~'/css/screen.css', 'screen') %}
      
      







選択されたテーマに基づいた相対パスをサポートするために、publishFileがassetManagerのラッパーとして追加されました。 つまり Yii.app.publishFile( 'assets')の構築は、現在のトピックのカタログからアセットフォルダーを公開します-便利だと思います。



ある時点で、追加のスクリプトを特定のビューに接続することにしたので、その小枝ファイルでのみ実行します

 {% call Yii.app.clientScript.registerScriptFile( assetsDir~'/js/myscript.js' ) %}
      
      







その結果、非常に読みやすい(とにかく)テンプレートが得られます-何かが接続されている場所がすぐにわかります。



layout.twig



 {% set assetsDir = Yii.app.publishFile('assets') %} {% call Yii.app.clientScript.registerScriptFile( assetsDir~'/js/chosen.jquery.min.js' ) %} {% call Yii.app.clientScript.registerCssFile( assetsDir~'/css/screen.css', 'screen') %} <html> <head><title>{% block title %}{% endblock %}</title></head> <body> <h1>, !</h1> {% block content %}{% endblock %} </body> </html>
      
      







index.twig



 {% extends 'layout.twig %} {% block title %} {% call Yii.app.clientScript.registerScriptFile( assetsDir~'/js/myscript.js' ) %}    {% endblock %} {% block content %}  ?{%endblock%}
      
      







コントローラーで$ this-> render( 'index')と出来上がりを取得します!



私にとって、このアプローチでは、ビューでリソースの接続を直接制御することが非常に重要です。

Nuance-別のテンプレートを展開するテンプレートでは、親テンプレートによって定義された変数は{%block%} {%endblock%}構造でのみ使用可能です



Yiiの使用済みtwig-extensionへのリンク: https : //github.com/yiiext/twig-renderer



確かに、私はそれを持っている、上で書いたように、壊れた-箱から出して、私はトピックと友達になりたくなかった、そして値を返さない手続きを呼び出して、構築するのが簡単
 {% call procedurename() %}
      
      



読みにくいより
 {{ void( procedurename() ) }},       twig.
      
      






All Articles