微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何根据会话中的值嵌入带有Assetic的样式表

我想在Symfony2项目的twig模板中嵌入带有资产的不同样式表文件.使用的样式表取决于用户主题设置.

我用了

{% stylesheets 
        '@CuteFlowCoreBundle/Resources/public/css/application.css'
        '@CuteFlowCoreBundle/Resources/public/css/theme/'~app.session.get('cuteflow_theme')~'/application.css'
%}
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css" media="all" />
{% endstylesheets %}

但这会引发错误

Unexpected token "operator" of value "~" in "CoreBundle::layout.html.twig"

我也试过以下.但这也没有帮助.

{% set theme = '@CuteFlowCoreBundle/Resources/public/css/theme/'~app.session.get('cuteflow_theme')~'/application.css' %}
{% stylesheets 
        '@CuteFlowCoreBundle/Resources/public/css/application.css'
        theme
%}
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css" media="all" />
{% endstylesheets %}

有什么想法可以做到这一点?

答案很简单:你做不到.

Assetic将迭代您的模板并从{%stylesheets%}块生成每个文件.

如果您使用变量(例如会话),则Assetic无法“猜测”所有可能的值.

你有两种可能性:

>单独2个CSS调用(1个用于公共调用,1个用于专用主题CSS) – 对我来说更有意义
>为每个主题创建1个CSS

分开2个CSS调用

{% stylesheets "A.css" "B.css" %} ... {% endstylesheets %}
<link rel="stylesheet" href="{{ asset("css/" ~ theme ~ ".css") }}" />

每个主题创建1个CSS

如果要为每个可用主题创建一个主题,为了保持简单,您必须手动执行:

{% if theme == "XXX" %}
  {%stylesheets "A.css" "XXX.css" %} ... {% endstylesheets %}
{% elseif theme == "YYY" %}
  {%stylesheets "A.css" "YYY.css" %} ... {% endstylesheets %}
{% endif %}

原文地址:https://www.jb51.cc/php/130866.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐