我正在尝试在Symfony2项目中清理我的html输出。真正困扰我的是我真的不知道如何动态导出内联JS。例如:我需要初始化Jquery数据表,但不是在每个页面上,大多数页面都有自己的特定内联js。我正在寻找一种方法,用我的js片段扩展一个twig块,它被组合在一起,并由外部(虚拟).js文件中的资产加载。
答案 0 :(得分:0)
是的,您需要使用模板继承并拥有父javascript / jquery块。 Jquery与javascript相同,因此您可以将其包含在一个块中或单独使用。如果使用变量,则将该变量传递给基本jquery部分。对于不同的页面,您需要扩展基本树枝文件,并通过包含父级或完全覆盖它来添加到javascript块。
base twig文件具有js和css块的基本html布局:
<!DOCTYPE html>
<html>
<head>
{% block head %}
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
{% block js %}
<script src="{{ asset('js/main.js') }}"></script>
{% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div>
<div id="footer">
{% block footer %}
© Copyright 2011 by <a href="http://domain.invalid/">you</a>.
{% endblock %}
</div>
</body>
</html>
这是由子页继承的
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block js%}
{{ parent() }}
<script src="jquery.plugin.js"></script>
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
</p>
{% endblock %}