搜尋

首頁  >  問答  >  主體

symfony2如何定義錯誤頁!

在使用doctrine2,定義了公司名唯一,再次提交時提示出錯.如何重新定義這個出錯的頁面.

我想大声告诉你我想大声告诉你2833 天前861

全部回覆(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
  • 取消回覆