symfony2/twig: Как смоделировать старые слоты symfony1 в symfony2?

Я просто не хочу показывать форму входа в макет на главной странице входа.

Я попытался установить переменную в дочернем шаблоне входа в систему ({% set layout_login = false %}) и проверить ее значение в макете, но мне нужно было установить также переменную в макете ({% set layout_login = true %}), и он всегда ловит значение переменной, установленное в макете (истинный)....

И попытался также установить переменную в контроллере, но в ветке нет ничего похожего на isset()...

Есть идеи?


person ziiweb    schedule 12.07.2012    source источник


Ответы (2)


Почему бы вам просто не определить блок в основном макете?

{% block loginForm %}
    <form />
{% endblock %}

И перегрузите его в свой шаблон входа:

{% block loginForm %}{% endblock %}
person Jakub Zalas    schedule 12.07.2012

Определен эквивалент isset().

Я написал так:

{% if layout_login is not defined %}

    {% if error %}
        <div>{{ error|trans({}, 'FOSUserBundle') }}</div>
    {% endif %}

    <form action="{{ path("fos_user_security_check") }}" method="post">
        <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

        <label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
        <input type="text" id="username" name="_username" value="{{ last_username }}" />

        <label for="password">{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}</label>
        <input type="password" id="password" name="_password" />

        <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
        <label for="remember_me">{{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}</label>

        <input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />
    </form>

{% endif %}
person ziiweb    schedule 12.07.2012