Php twig中的动态{%use%}语句?
我想实现以下目标: 我的所有页面都有一个基本模板,名为“Php twig中的动态{%use%}语句?,php,twig,Php,Twig,我想实现以下目标: 我的所有页面都有一个基本模板,名为“\u page\u base.twig”。它包含页眉和页脚 然后我为页面的不同区域创建了一个模板:“topic.twig”、“section.twig”和“article.twig”——它们都扩展了“\u page\u base.twig”,到目前为止效果很好 现在我想写我的文章。我也希望将它们保存为.twig文件,因为我可以在编辑器中编辑完整的标记并上传它 既然我不能说我的文章文件只是扩展了“article.twig”(多重继承是不可能的
\u page\u base.twig
”。它包含页眉和页脚
然后我为页面的不同区域创建了一个模板:“topic.twig
”、“section.twig
”和“article.twig
”——它们都扩展了“\u page\u base.twig
”,到目前为止效果很好
现在我想写我的文章。我也希望将它们保存为.twig文件,因为我可以在编辑器中编辑完整的标记并上传它
既然我不能说我的文章文件只是扩展了“article.twig
”(多重继承是不可能的),我可以告诉“article.twig
”它应该使用来自不同文章内容twigfile的块。
问题是:“use”语句必须硬编码
我当前的解决方案是将{%use“[PLACEHOLDER]”“%}
添加到“article.twig
”中,然后将模板加载到字符串中,将占位符替换为正确的article-content.twig,然后将整个内容传递给模板引擎。真是一团糟
你们有什么更好的解决方案吗?-没有动态名称空间
LiipThemeBundle可能是一个解决方案:
-没有动态名称空间
LiipThemeBundle可能是一个解决方案:
除非我不理解这个问题,否则显示一篇文章只需要扩展u page_base.twig
如果您需要显示多篇文章,您可以使用一个模板来显示文章列表,该模板还可以扩展u page_base.twig并将文章列表传递给此模板。除非我不理解这个问题,否则显示一篇文章只需要扩展u page_base.twig即可
{# on article.twig#}
{% set articles = ['someArticle.twig', ...] %}
{% for article in articles %}
{% include article %}
{% endfor %}
{# on someArticle.twig #}
... Article text ...
在需要显示多篇文章的情况下,您可以使用一个专用于显示文章列表的模板,该模板还可以扩展u page_base.twig并将文章列表传递到此模板。您可以尝试使用include标记。由于此标记接受要包含的动态名称模板,因此只需定义一个包含article twig模板名称的变量
{# on article.twig#}
{% set articles = ['someArticle.twig', ...] %}
{% for article in articles %}
{% include article %}
{% endfor %}
{# on someArticle.twig #}
... Article text ...
如果您需要自定义someArticle.twig中的某些内容,您可以进入下一个级别:嵌入标记。您应该在someArticle.twig
中定义一个块标记,该块将成为自定义值的占位符
{# on article.twig#}
{% set articles=['someArticle.twig', ...] %}
{% for article in articles %}
{% embed article %}
{% block inside_text_article %}
... custom text ...
{% endblock %}
{% endembed %}
{% endfor %}
{# on someArticle.twig #}
... article text ...
{% block inside_text_article %}default values{% endblock %}
... article text ...
您可以尝试使用include标记。由于此标记接受要包含的动态名称模板,因此只需定义一个包含article twig模板名称的变量
{# on article.twig#}
{% set articles = ['someArticle.twig', ...] %}
{% for article in articles %}
{% include article %}
{% endfor %}
{# on someArticle.twig #}
... Article text ...
如果您需要自定义someArticle.twig中的某些内容,您可以进入下一个级别:嵌入标记。您应该在someArticle.twig
中定义一个块标记,该块将成为自定义值的占位符
{# on article.twig#}
{% set articles=['someArticle.twig', ...] %}
{% for article in articles %}
{% embed article %}
{% block inside_text_article %}
... custom text ...
{% endblock %}
{% endembed %}
{% endfor %}
{# on someArticle.twig #}
... article text ...
{% block inside_text_article %}default values{% endblock %}
... article text ...
实际上,我使用了另一种方法:加载和解析我的文章内容文件,并将其作为变量传递给我的“article.twig”。我写了一个简单的方法来描述它:实际上我使用了另一种方法:加载和解析我的文章内容文件,并将其作为变量传递给我的“article.twig”。我写了一个简单的食谱来描述它: