3

我想获得错误页面(在应用程序出现异常之后),而不是测试环境中的调试页面。

我跟踪了 Twig Bundle 代码,答案在 findTemplate() 方法的Symfony\Bundle\TwigBundle\Controller\ExceptionController类中。在这里,我复制了负责选择模板的代码片段。

    $name = $debug ? 'exception' : 'error';
    if ($debug && 'html' == $format) {
        $name = 'exception_full';
    }

这段代码没有问题。关键是我无法为我的测试环境将 ExceptionController $debug变量设置为 false。

根据TwigBundle 配置参考,在config_test.yml中将调试参数设置为 false 就足够了。

twig:
  debug:       false

这是行不通的。

我浏览了 Symfony 代码并在vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml上找到了这个片段配置。

    <service id="twig.controller.exception" class="%twig.controller.exception.class%">
        <argument type="service" id="twig" />
        <argument>%kernel.debug%</argument>
    </service>

因此,无论我在配置文件上设置什么,调试变量值都不会被修改。

你怎么看待这件事?

我正在使用 Symfony 2.2.1,这个问题与其他问题有点相关。

4

1 回答 1

0

这不是基于环境吗?

就像在 app_dev.php 中一样:

$kernel = new AppKernel('stag', TRUE); #TRUE = debug/dev mode on
$kernel = new AppKernel('stag', FALSE); #FALSE = debug/dev mode off
于 2013-05-30T10:07:43.997 回答