Symfony 4:AccessDeniedHttpException()获取访问自定义变量

时间:2018-12-05 15:49:41

标签: symfony twig

在我的RequestListener.php中,如果用户无法访问实体,则使用以下异常:

throw new AccessDeniedHttpException();

因此,它使用树枝返回了我的自定义403错误html模板。

<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>

但是我不知道在错误模板中是否可以访问在异常中传递的字符串...

1 个答案:

答案 0 :(得分:1)

也许看看这个: How to display exception text in a custom error page on Symfony?

您可以在树枝中使用exception.message变量。

<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>