好的,我不确定我是否错过了这里的伎俩。但我无法在文档中找到任何内容或在解决方案中找到任何内容。 基本上我试图用模板块包含一大块javascript,但样式也是如此。 我总结了模板结构:
{# base.html.twig %}
<html>
<head>
<title>{% block title %}Base template{% endblock %}</title>
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('bundles/thisBundle/css/theme.css') }}" type="text/css" media="all" />
{% endblock %}
{% block scripts %}{% endblock %}
<head>
<body>
{% block content %}hello from base{% endblock %}
{% block javascripts %}
{% endblock %}
</body>
</html>
{# index.html.twig #}
{% extends 'base.html.twig %}
{% block content %}
{% include 'ThisBundleBundle::templatewithascript.html.twig' %}
<p>Some content here<p>
{% include 'ThisBundleBundle::anothertemplatewithascript.html.twig' %}
{% endblock %}
现在这是我的问题。从这个模板我想添加到javascripts / stylesheets块的内容,但我的include在内容块中,我不能在templatewithascript.html.twig中扩展index.html.twig,基本上我希望这个工作:
{# templatewithascript.html.twig #}
{% block stylesheets %}
<link href="{{ asset('bundles/thisBundle/css/blockspecificstyle.css') }}" rel="stylesheet" type="text/css" />
{% endblock %}
{% block body %}
<p>Click here and something happens</p>
{% endblock %}
{% block javascripts %}
<script type="text/javascript">
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
{% endblock %}
或者这只是一个限制,我必须在包含内容的模板中包含样式/脚本? 谢谢。 路
答案 0 :(得分:1)
好的回答我自己的问题! 导入宏是我提出的答案,即:
{# index.html.twig #}
{% extends 'base.html.twig' %}
{% import 'ThisBundleBundle::templatewithascript.html.twig' as importedTemplate %}
{% block content %}
{{ importedTemplate.content }}
{% endblock %}
{% block javascripts %}
{{ importedTemplate.js }}
{% endblock %}
{# templatewithascript.html.twig #}
{% macro content %}
<p>Click here and something happens</p>
{% endmacro %}
{% macro js %}
<script type="text/javascript">
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
{% endmacro %}
它似乎工作但不确定我是否有点弯曲规则到达那里。并且似乎应该有一种更简单的方法可以让我在templatewithascript.html.twig中完成所有这些工作?
答案 1 :(得分:0)
您可以做的是将index.html.twig转换为另一个可扩展模板,从templatewithascript.html.twig扩展并从控制器渲染:
{# templatewithascript.html.twig #}
{% extends 'ThisBundleBundle::index.html.twig' %}
...
{# index.html.twig #}
{% extends 'base.html.twig %}
{% block content %}
{% block body %}{% endblock body %}
{% endblock content %}