gpt4 book ai didi

php - 如何根据 session 中的值使用 Assetic 嵌入样式表

转载 作者:可可西里 更新时间:2023-11-01 13:15:23 25 4
gpt4 key购买 nike

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

我用过

{% 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 %} block 生成每个文件。

如果您使用变量(例如 session ),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 %}

关于php - 如何根据 session 中的值使用 Assetic 嵌入样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6778588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com