ブロック名にvarsを使用しても機能しません。
{%set block_name = "my_block_name"%}
{%block block_name%}
いくつかのhtml..。
{%エンドブロック%}
block_name
は文字列'block_name'
として表されるため
申し訳ありませんが、小枝で動的ブロックを作成できない、または間違った方法で使用しているとおっしゃっていますか?
あなたは正しいです、動的なブロック名はありません
動的ブロックは使用できません。 Twigユーザーのメーリングリストにユースケースを投稿してください。
コールドケースを開けてすみません^^。 動的ブロック名の恩恵を受けるユースケースに遭遇したかもしれないと思います...
私は単一テーブル継承でDoctrineを使用しています(基本抽象クラス= Article、News + FaqはArticleを拡張します)。
次に、ニュースとよくある質問を作成できるようにフォームクラスを作成しました。 ただし、すべてのフォームで同じ小枝テンプレートが使用されます。 次に、ここで説明するように、フィールドテンプレート(article.productなど)をカスタマイズする必要があり
問題は、使用するフォームによってフィールドの名前が変わることです。 名前はnews_productまたはfaq_productのいずれかになるため、フォームフィールドを次のようにカスタマイズして、繰り返しを避けることができると便利です。
{%- block '_'~type~'_product_widget' -%}
...
{% endblock %}
いくつかの調査の後、getBlockPrefixを使用して異なるフォームタイプクラスでフォームのプレフィックスを強制することでこれを解決しました。これにより、すべてのフォームが同じフィールド名を持ち、article_productを簡単にカスタマイズできます。
public function getBlockPrefix(){
return 'article';
}
だから、誰かを助けるかもしれないこのユースケースを文書化したかっただけです...
ブロック名はテンプレートの構造の一部であるため、コンパイル時に認識されている必要があります。
変数は実行時にのみ認識されます。
最も参考になるコメント
ブロック名はテンプレートの構造の一部であるため、コンパイル時に認識されている必要があります。
変数は実行時にのみ認識されます。