Переменная app.user пустая (или недоступная?) в пользовательском сообщении об ошибке ветки - PullRequest
0 голосов
/ 06 апреля 2019

Согласно symfony docs , переменная app доступна "везде" для шаблонов веток. Я хочу использовать app.user в пользовательском сообщении об ошибке, но эта переменная фактически не доступна в этих шаблонах в режиме prod; он доступен в режиме dev.

Пример кода:

// project/templates/bundles/TwigBundle/Exception/error404.html.twig
{% extends 'base.html.twig' %}
{% block body %}
    {{ parent() }}

    <div>
        <h1>Page not found</h1>

        <p>
            Hello {{ app.user.name }}, {% <---- DOES NOT WORK %}

            The requested page couldn't be located. Checkout for any URL
            misspelling.
        </p>
    </div>
{% endblock %}

Это простой пример, но он иллюстрирует суть. Я также пытался использовать

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
   // do something fancy
{% endif %}

и это тоже не работает. Также не имеет значения, расширяю ли я base.html.twig или вытягиваю parent(), во всех случаях это не работает. Я не получаю сообщений об ошибках вообще. Я очистил по кешу.

Есть идеи, как получить эту информацию для моего шаблона в режиме prod?

1 Ответ

3 голосов
/ 06 апреля 2019

Я обнаружил в документации, что проблема, которую я описываю, является намеренной. Из документов:

Безопасность и 404 страницы¶

В зависимости от порядка маршрутизации и безопасности загружен, информация о безопасности не будет доступна на ваших 404 страницах. Это означает, что это будет выглядеть так, как будто ваш пользователь вышел из 404 страница (будет работать во время тестирования, но не на производстве).

Ответ - создать собственный контроллер исключений (или расширить значение по умолчанию ExceptionController).

...