php – 如何根据会话中的值嵌入带有Assetic的样式表
发布时间:2020-12-13 14:09:38 所属栏目:PHP教程 来源:网络整理
导读:我想在Symfony2项目的twig模板中嵌入带有资产的不同样式表文件.使用的样式表取决于用户的主题设置. 我用了 {% stylesheets '@CuteFlowCoreBundle/Resources/public/css/application.css' '@CuteFlowCoreBundle/Resources/public/css/theme/'~app.session.get
我想在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) – 对我来说更有意义 分开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 %} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |