我正在为几乎所有的开发构建一个具有共同功能的/app/Resources/base.html.twig
,例如,所有开发都使用Twitter Bootstrap,Select2和一些常用库。然后,对于任何项目,我创建了一个名为TemplateBundle
的包,在其中我有一个名为layout.html.twig
的模板,该模板从base.html.twig
延伸。以此作为起点我对我的方法有些怀疑:
在base.html.twig
我使用Assetic处理资产,我有以下几行:
{% block stylesheets %}
{% stylesheets
'bundles/template/css/bootstrap.min.css'
'bundles/template/css/bootstrap-theme.min.css'
'bundles/template/css/font-awesome.min.css'
'bundles/template/css/select2.css'
'bundles/template/css/select2-bootstrap.css'
'bundles/template/css/bootstrapValidator.min.css'
'bundles/template/css/datepicker.css'
'bundles/template/css/datepicker3.css'
'bundles/template/css/styles.css'
filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
我希望将base.html.twig
视为可扩展,并且在上面的代码中并非所有网站都使用datepicker.css
或styles.css
,因为这是当前网站或其他网站的一部分案例文件名在站点之间发生了变化,所以我的问题是:我如何在layout.html.twig
处理这个问题?例如,在Site1中,所有模板都将从layout.html.twig
扩展,然后在此布局中我可以设置datepicker
和styles
的使用,但对于Site2,我可以定义仅使用{{1}等等,那么如何在styles
维护资产中处理这个问题?
layout.html.twig
,但如果明天我将这个模块称为“模板1”,会发生什么?然后我应该照顾TemplateBundle
并改变任何资产路径,你如何处理这个?我的意思是你把公共文件放在哪里,例如这个?明白我的问题?
答案 0 :(得分:1)
基础模板将非常复杂。我宁愿选择多种布局。因为你拥有捆绑中的所有东西。
另一种选择是在base.html.twig中使用常见的选项。并使用{{ parent() }}
在layout.html.twig上进行扩展,这将打印base.html.twig块内容,
但是你将失去生产中的前端性能。
base.html.twig
{% block stylesheets %}
{% stylesheets 'bundles/template/css/bootstrap.min.css' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
layout.html.twig
{% block stylesheets %}
{{ parent() }}
{% stylesheets
'bundles/template/css/datepicker.css'
'bundles/template/css/datepicker3.css'
filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}