3

ユーザーによってさまざまなレイアウトがあります。これにより、次のエラーが発生します: "Multiple extends tags are forbidden"。ユーザーの役割に応じて異なるレイアウトを使用するにはどうすればよいですか?

{% if is_granted('ROLE_USER_ONE') %}

{% extends "AcmeUserBundle::layout_user_one.html.twig" %}

{% elseif is_granted('ROLE_USER_TWO') %}

{% extends "AcmeUserBundle::layout_user_two.html.twig" %}

{% endif %}

編集

これが答えです。どうすればいいのか分からない場合に備えて、3 人のユーザーの場合を使用します。この場合、誰かがステートメントについて不思議に思った場合に備えて、特権adminも持っています。この場合に使用しますが、回答の1つで提案されているように、読みやすいかもしれません。userOneuserTwoelseConditional InheritanceDynamic Inheritance

{% set admin = false %}

{% set userOne = false %}

{% set userTwo = false %}

{% if is_granted('ROLE_ADMIN') %}

    {% set admin = true %}

{% else %}

    {% if is_granted('ROLE_USER_ONE') %}

        {% set userOne = true %}

    {% elseif is_granted('ROLE_USER_TWO') %}

        {% set userTwo = true %}

    {% endif %}

{% endif %}

{% extends admin ? "AcmeUserBundle::layout_admin.html.twig" : userTwo ? "AcmeUserBundle::layout_user_two.html.twig" : "AcmeUserBundle::layout_user_one.html.twig" %}
4

2 に答える 2

7

ドキュメントの条件付き継承セクションを確認してください。

3 つ以上のオプションが必要な場合は、動的継承セクションを参照してください。

{% set parent = 'defaultLayout.html.twig' %}
{% if is_granted('ROLE_USER') %}
    {% set parent = 'userLayout.html.twig' %}
{% elseif is_granted('ROLE_ADMIN') %}
    {% set parent = 'adminLayout.html.twig' %}
{% endif %}

{% extends parent %}
于 2012-08-01T06:40:47.273 に答える
1

2つの異なるテンプレートが必要です

#user_one.html.twig
{% extends "AcmeUserBundle::layout_user_one.html.twig" %}

#user_two.html.twig
{% extends "AcmeUserBundle::layout_user_two.html.twig" %}

次に、1つの「エントリ」ポイントが必要です。いくつかuser.html.twigは、次のように決定します。

#user.html.twig
{% if is_granted('ROLE_USER_ONE') %}
    {% include "AcmeUserBundle::user_one.html.twig" %}
{% elseif is_granted('ROLE_USER_TWO') %}
    {% include "AcmeUserBundle::user_two.html.twig" %}
{% endif %}
于 2012-08-01T06:26:52.623 に答える