我有几个包,我想知道是否可以为每个包自定义它们自己的错误页面。
我阅读了食谱,示例仅显示了所有捆绑包的通用自定义页面。
有没有办法覆盖每个捆绑包的异常过程?
侦听器本身必须检测到这一点-我不知道有任何方法可以为单个捆绑包指定侦听器。
<?
namespace Your\MainBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class YourExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$namespace = new \ReflectionObject( $event->getController() )->getNamespaceName();
switch ( $namespace )
{
case 'Acme\\DemoBundle':
// do whatever with $exception here
break;
case 'Some\\OtherBundle':
// do whatever with $exception here
break;
case 'Your\\MainBundle':
// do whatever with $exception here
break;
default;
// default
}
}
}
并注册
//services.yml
kernel.listener.yourlistener:
class: Your\MainBundle\YourExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
我制作了一个捆绑包,用于从路由正则表达式配置中捕获不同的错误页面,它适用于文档中所述的“kernel.exception_listener”侦听器和“kernel.exception”事件(http://symfony.com/doc/当前/cookbook/controller/error_pages.html#use-kernel-exception-event)。
使用此捆绑包,您可以:
链接到捆绑包(MIT 许可证):https ://github.com/Kwrz/TwigException
感谢您的想法彼得,我想在我的捆绑包的下一个版本中添加一个功能,以从相应的捆绑包命名空间定义模板。