Symfony 4 - Пользовательская страница ошибки и пользовательское сообщение об ошибке

Я хочу создать свою настраиваемую страницу ошибок (404, 403 и т. д.) В Symfony 4, поэтому у меня есть исключение, например

if (!$thisVarIsNull) {
    throw $this->createNotFoundException(
        'This is my custom message'
    );
}

и я создал базовый шаблон в расположении templates/bundles/TwigBundle/Exception/error.html.twig:

{% extends "base.html.twig" %}
{% block title %}
    We got a problem
{% endblock %}
{% block body %}
    <div>
        <p>
            {{ status_code }} :: {{ exception.message }}
        </p>
    </div>
{% endblock %}

но exception.message ничего не возвращает. В чем проблема?

Вы действительно хотите распечатать исключение для пользователя? На мой взгляд, очень плохая идея ... Вы установили точку останова, чтобы посмотреть, что произойдет?

Jim Panse 03.07.2018 16:16

Попробуйте сбросить {{exception}}, чтобы увидеть его содержимое.

revengeance 03.07.2018 16:33

@JimPanse Хорошо, мне нужно показать 2 ошибки: не найдена конкретная запись и "проверка" вернула false. Как мне это сделать?

Paul 04.07.2018 09:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
4 698
2

Ответы 2

Хорошо, я проверил документы. Нет переменной исключение.

Вы можете получить только 2 вещи

  • КОД - {{status_code}}
  • STATUS_TEXT - {{status_text}}

Кроме того

error.html.twig будет отображаться, когда вы получите все ошибки, кроме 404/403.

Пожалуйста, также создайте шаблоны для 404/403 (в той же папке), иначе будут отображаться шаблоны по умолчанию.

  • error404.html.twig
  • error403.html.twig

Вы можете легко протестировать все, что находится в разработке, используя / _error / {statusCode} ...

Например: yoursite.com/_error/404

Я почти уверен, что для сообщения об исключении действительно существует переменная. Это не задокументировано, потому что обычно вы не хотите напрямую выводить сообщение об ошибке для внешнего пользователя.

Jim Panse 03.07.2018 16:54

Вы ищете {{ status_message }} вместо {{ exception.message }}.

Другие вопросы по теме