Symfony 2. 如何在 Twig 模板中捕获异常参数?

标签 symfony symfony-2.3

我在我的 Controller 中抛出了一些异常。

例如:

throw new AccessDeniedHttpException('some_text');

我怎样才能捕获它 'some_text' 我的 Twig 模板中的参数?

我找到了 {{ status_code }} 和 {{ status_text }} 变量,但找不到类似的东西来解决我的问题。

附注我已经在使用自定义错误页面。我只想给用户具体的错误解释。

谢谢。

最佳答案

默认情况下,Symfony 使用 showActionSymfony\Bundle\TwigBundle\Controller\ExceptionController呈现您的错误页面。 Symfony 2.3 中的实现是这样的:

public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $_format = 'html')
{
    $currentContent = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1));

    $code = $exception->getStatusCode();

    return new Response($this->twig->render(
        $this->findTemplate($request, $_format, $code, $this->debug),
        array(
            'status_code'    => $code,
            'status_text'    => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '',
            'exception'      => $exception,
            'logger'         => $logger,
            'currentContent' => $currentContent,
        )
    ));
}

从那里你可以看到有 'exception' => $exception传递给你的 Twig 模板。 $exception类型为 Symfony\Component\HttpKernel\Exception\FlattenException这是原始 PHP 异常的包装器。
FlattenException::getMessage可能是您想要访问错误消息的内容。见 FlattenException API想要查询更多的信息。

关于Symfony 2. 如何在 Twig 模板中捕获异常参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651029/

相关文章:

symfony - 503 服务不可用 openshift 可扩展应用程序与 symfony2

html - 如何将按钮添加到导航栏?

php - ACL ROLE_ADMIN 不起作用

forms - Symfony2 - 如何在使用 query_builder 时自定义实体字段类型的选择选项标签?

forms - 如何在 Symfony2 中的某些步骤中执行表单 - 步骤验证

javascript - 如何只传递错误信息?

Symfony2 循环引用

json - 问题尝试将实体编码为 json

java - 转储 assetic 时找不到/usr/bin/java

forms - Symfony2 验证组和映射