suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So definieren Sie eine Fehlerseite in Symfony2!

Bei Verwendung von Doctrine2 und der Definition eines eindeutigen Firmennamens erscheint beim erneuten Absenden eine Fehlermeldung. So definieren Sie diese Fehlerseite neu.

我想大声告诉你我想大声告诉你2833 Tage vor859

Antworte allen(2)Ich werde antworten

  • 迷茫

    迷茫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

    Antwort
    0
  • 黄舟

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

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

    Antwort
    0
  • StornierenAntwort