搜索

首页  >  问答  >  正文

symfony2如何定义错误页面!

在使用doctrine2,定义了公司名唯一,再次提交时提示出错.如何重新定义这个出错的页面.

我想大声告诉你我想大声告诉你2791 天前829

全部回复(2)我来回复

  • 迷茫

    迷茫2017-05-16 16:47:16

    Doctrine 2是一个独立的第三方库,封装的是PDO,PDO遇到唯一性冲突,扔出的是一个PDOException。

    默认配置下,开发环境的出错页面,也就是catch了这个PDOException,输出Message而已。

    重新定义Symfony 2的报错页面,有两种办法:

    (一)建一个app/Resources/TwigBundle/views/Exception/error.html.twig,按自己需要进行修改。

    模板里有statustext,statuscode等数据可以用。

    (二)或者就是用Event,监听kernel.exception事件:

    use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
    use Symfony\Component\HttpFoundation\Response;
    
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();
    
        // 你已经获得了Exception:可以针对性地写逻辑
    
        $response = new Response();
        $event->setResponse($response); // 如果你在event里设置了response,这个response就会返回给用户
    
        // ...
    }
    

    http://symfony.com/doc/current/book/internals.html#kernel-kernel-exception

    回复
    0
  • 黄舟

    黄舟2017-05-16 16:47:16

    Symfony的The Book的模板里面已经写的很清楚了,会先查找app/Resources下是否有这个模板,没有才去Bundle里面. 最重要的是需要清除缓存才有效

    回复
    0
  • 取消回复