如果用户在Symfony上嵌入了twig,则会有不同的设计

时间:2016-05-02 17:38:17

标签: symfony twig

我正在创建一个新项目,在我的主页设计中,如果用户是来宾,我需要显示2列,如果用户被记录,我需要显示3列。

好的,我正在尝试使用Twig上的embed函数,但是我只能使它复制html代码而不使用'embed'Twig函数(这么糟糕的技术......)。

这是我的模板:

index.html.twig

{% extends 'base.html.twig' %}
    {% block body %}
        {% embed "home_columns" %}
            {% if is_granted("IS_AUTHENTICATED_FULLY") %}
                    3 columns
            {% else %}
                    2 columns
            {% endif %}
        {% endembed %}
{% endblock %}

home_columns.html.twig

{% block main_left_col %}
    <aside id="left_column" class="col-md-2">&nbsp;</aside>
{% endblock %}

{% block main_middle %}
    <section id="last-plans" class="col-md-8"></section>
{% endblock %}

{% block main_right_col %}
    <aside id="right_column" class="col-md-2">&nbsp;</aside>
{% endblock %}

但它现在正在运作......

嵌入树枝功能是否是我想要的最佳方式?

1 个答案:

答案 0 :(得分:0)

好的,真正的问题是代码的这一部分:

    {% if is_granted("IS_AUTHENTICATED_FULLY") %}
        3 columns
    {% else %}
        2 columns 
        {% block main_right_col %}{% endblock %}
    {% endif %}

返回此错误:

    An exception has been thrown during the compilation of a template         
    ("Node "1" does not exist for Node "Twig_Node".") in         
    "HomeBundle:Default:index.html.twig". 

似乎我无法检查用户是否从嵌入树枝模板中登录。

在视图中:

    {% extends 'base.html.twig' %}

    {% block body %}

        {% embed "HomeBundle:Default:home_columns.html.twig" with { 'userIsLogged': is_granted("IS_AUTHENTICATED_FULLY") } %}

        {% endembed %}

    {% endblock %}

在嵌入式视图中:

    {% if userIsLogged == true %}

        3 columns

    {% else %}

        2 columns 

    {% endif %}

问候!