В моем RequestListener.php, если объект недоступен для пользователя, я использую следующее исключение:
throw new AccessDeniedHttpException();
Таким образом, он возвращает мне мой собственный шаблон html с ошибкой 403 с использованием twig.
<div class = "jumbotron jumbotron-fluid exception">
<table class = "wrapper">
<tr>
<td>
<div class = "error-code">
<span>403</span>
<div class = "caption">
<h1 class = "text-light">Test h1</h1>
<h2 class = "text-light">Test h2</h2>
<p>
Test
</p>
</div>
</div>
</td>
</tr>
</table>
</div>
Теперь я хочу сделать то же самое:
throw new AccessDeniedHttpException();
Использование другого сообщения в зависимости от ситуации, в которой возникает ошибка 403.
Например, я пытался сделать следующее:
throw new AccessDeniedHttpException('custom');
В моем шаблоне 403.html.twig
<div class = "jumbotron jumbotron-fluid exception">
<table class = "wrapper">
<tr>
<td>
{% if status_text %}
{{ status_text }}
{% else %}
<div class = "error-code">
<span>403</span>
<div class = "caption">
<h1 class = "text-light">Test h1</h1>
<h2 class = "text-light">Test h2</h2>
<p>
Test
</p>
</div>
</div>
{% endif %}
</td>
</tr>
</table>
Но я не знаю, доступна ли строка, переданная в исключении, в моем шаблоне ошибки ...
С APP_ENV = dev он показывает мне "custom" с правильным исключением 403 (но не мой шаблон html, это страница отладки по умолчанию). С APP_ENV = prod дамп не работает, и отображение переменной напрямую ничего не показывает ...
Может быть, взгляните на это: stackoverflow.com/a/19814235/5165724. Вы можете добиться желаемого, используя переменную exception.message в twig.
Спасибо за ответ :) Именно то, что я хотел!




Может быть, взгляните на это: Как отобразить текст исключения на настраиваемой странице ошибки в Symfony?.
Вы можете использовать переменную exception.message в twig.
<div class = "jumbotron jumbotron-fluid exception">
<table class = "wrapper">
<tr>
<td>
{% if exception.message %}
{{ exception.message }}
{% else %}
<div class = "error-code">
<span>403</span>
<div class = "caption">
<h1 class = "text-light">Test h1</h1>
<h2 class = "text-light">Test h2</h2>
<p>
Test
</p>
</div>
</div>
{% endif %}
</td>
</tr>
</table>
Вы всегда можете попробовать посмотреть, что находится в
status_text, используя{{ dump(status_text) }}.