6

Symfony2プロジェクトの小枝テンプレートにアセット付きのさまざまなスタイルシートファイルを埋め込みたいです。使用するスタイルシートは、ユーザーのテーマ設定によって異なります。

使用しました

{% 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 %}

これをどのように行うことができるかについてのアイデアはありますか?

4

1 に答える 1

10

答えは簡単です。それはできません。

Assetic はテンプレートを反復処理し、{% stylesheets %}ブロックからすべてのファイルを生成します。

変数 (セッションなど) を使用する場合、Assetic はすべての可能な値を「推測」することはできません。

2 つの可能性があります。

  • 2 つの CSS 呼び出し (共通呼び出し用に 1 つ、専用テーマ CSS 用に 1 つ) を分離する -私にとってはより理にかなっています
  • テーマごとに 1 つの CSS を作成する

2 つの CSS 呼び出しを分離する

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

テーマごとに 1 つの CSS を作成する

使用可能なテーマごとに 1 つのテーマを作成する場合は、シンプルに保つために手動で作成する必要があります。

{% if theme == "XXX" %}
  {%stylesheets "A.css" "XXX.css" %} ... {% endstylesheets %}
{% elseif theme == "YYY" %}
  {%stylesheets "A.css" "YYY.css" %} ... {% endstylesheets %}
{% endif %}
于 2011-07-27T09:09:43.363 に答える