0

我正在尝试在 Symfony 2 中创建自定义异常页面,并在此处此处遵循 Symfony 2 指南。第二个链接说要修改找到的控制器Symfony\\Bundle\\TwigBundle\\Controller\\ExceptionController::showAction,但我只能在文件夹中找到该vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Controller文件。据我了解,我永远不应该修改vendors文件夹中的任何内容。

我想知道ExceptionController我应该修改的位置在哪里?

4

4 回答 4

1

如果您需要覆盖 symfony 错误模板,请从

vendor/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception

并将您想要自定义的那些放在 app/Resources/TwigBundle/views/Exception 目录中。然后根据需要进行定制。

如果要基于应用程序渲染模板,请参阅我的答案@customize 403 error page depening on route in symfony 2.0

于 2013-01-14T17:29:08.687 回答
1

如果您只需要更改错误页面的布局,那么创建文件就app/Resources/TwigBundle/views/Exception足够了。

但是,如果您需要将其他参数传递给错误页面,则应覆盖默认值ExceptionController。为此,您应该创建一个扩展默认控制器的新控制器:

use Symfony\Bundle\TwigBundle\Controller\ExceptionController;
class MyExceptionController extends ExceptionController {
    //override the showAction() or findTemplate() method here
}

然后你需要告诉 symfony 使用你的新控制器。这可以通过在parameters.yml文件中添加新参数来完成:

parameters:
    twig.controller.exception.class: YourBundle\Controller\MyExceptionController
于 2014-08-12T23:24:55.300 回答
0

对我来说不是

parameters:
twig.controller.exception.class: YourBundle\Controller\MyExceptionController

parameters:
twig.controller.exception.class: YourNamespace\YourBundle\Controller\MyExceptionController
于 2014-08-18T07:17:53.333 回答
0

使用 Symfony 4 你需要这个:

class TwigExceptionControllerCompilerPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
        $definition = $container->getDefinition('twig.controller.exception');
        $definition->setClass(TwigExceptionController::class);
    }
}
于 2018-11-29T17:20:14.070 回答