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. 

Source: https://habr.com/ru/post/J151463/


All Articles