我有一个必须提供不同主题的Symfony2应用程序。这些主题本质上是包含CSS文件的目录(最终是其他文件并缩小为单个文件)。
在Phalcon中,我可以在控制器中动态设置资产的资产位置。在Symfony中,资产是明确定义的。我目前的解决方案如下,但看起来不太好。这是我的base.html.twig
的HTML。我的实体中有一个属性theme
,我在控制器中定义了主题对象。
基本上我正在寻找在Symfony中执行此操作的正确方法。否则,我会这样做。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
{% if theme is defined %}
{% for asset in theme.css %}
<link rel="stylesheet" href="{{ asset.url }}"/>
{% endfor %}
{% endif %}
</head>
<body>
{% block page %}
Welcome to the default page!
{% endblock %}
{% block javascripts %}
{% if theme is defined %}
{% for asset in theme.js %}
<script src="{{ asset.url }}"></script>
{% endfor %}
{% endif %}
{% endblock %}
</body>
</html>
答案 0 :(得分:0)
我认为最优雅的方法是定义默认主题,并将不同主题放入根文件夹,就像这样:
themes/
default/
css|js|images...
blue/
css|js|images...
yellow/
css|js|images...
然后在Twig模板引擎中,您可以像这样使用它:
<link rel="stylesheet" href="themes/{{ theme_name|default("default") }}/css/app.css"/>
<script src="themes/{{ theme_name|default("default") }}/js/app.js">