1

私は Twig で Symfony2 を使用しており、div であるべきクラスを決定しようとすると、Twig は、if..else 節でビーイングを行っても4 つのクラスすべてがアクティブであると言います。リダイレクトには 1 つの値しかありません。構文を確認しましたが、正しいと思うので、何か不足している可能性があります。

私のコードは正しいですか、それともTwigの比較で何か問題がありますか(等式またはif..else句)?

小枝のコードは次のとおりです。

{% if redirect == 'a' %}
    {% block classA 'active' %}
{% elseif redirect == 'b' %}
    {% block classB 'active' %}
{% elseif redirect == 'c' %}
    {% block classC 'active' %}
{% else %}
    {% block classD 'active' %}
{% endif %}

そしてコントローラーコード:

[...]
$redirect = "a";

return $this->render('FrontendBundle:Default:delete.html.twig', array(
    'id' => $id,
    'redirect' => $redirect,
    'text' => $text)
);

編集しました。

解決

ブロックの外で if 句を使用することはできないことがわかったので、クラスごとに 1 つのブロックを使用して解決策を進めます。

また、より良い解決策は動的名前ブロックを使用することだと思いましたが、それは不可能だと読みました。

最後に、別の方法で問題を解決するこれを見つけました: http://peter-hoffmann.com/2012/highlight-active-menu-item-with-twig-and-silex.html

敬具。

4

2 に答える 2

0

この種の動作に対して最も効率的なアプローチを取っているかどうかはわかりませんが、それでも、ブロックをこのように定義するべきではありませんか?

{%block classA%} active {%endblock%}

于 2013-01-23T11:49:56.963 に答える