2012-05-18 35 views
9

Tôi muốn làm việc trên trang 404 từ môi trường dev. Tôi tùy chỉnh 404 sử dụng tập tin này: app/Resources/TwigBundle/views/ngoại lệ/error.html.twigSymfony2 hiển thị trang lỗi 404 trong dev

này prod url công việc một cách chính xác: mysite.com/404

Nhưng điều này một mysite.com/app_dev.php/404 ném một NotFoundHttpException và cho tôi trang gỡ lỗi dev.

Có thể hiển thị trang lỗi thay vì trang gỡ lỗi không?

UPDATE:

Các tài liệu chính thức như bây giờ một chương về điều đó: Testing Error Pages during Development

+0

Override 'ứng dụng/Tài nguyên/TwigBundle/views/Exception/exception.html.twig' là tốt? – meze

Trả lời

10

As of Symfony2.6 trong môi trường phát triển, bạn có thể sử dụng các tuyến đường sau:

/_error/404.html 

đâu 404 là mã lỗi để kiểm tra và html định dạng của các yêu cầu. Để có thể sử dụng tính năng này, hãy chắc chắn bạn có các mục sau đây trong tập tin routing_dev.yml của bạn:

# app/config/routing_dev.yml 
_errors: 
    resource: "@TwigBundle/Resources/config/routing/errors.xml" 
    prefix: /_error 
13

Bạn cần phải ghi đè lên các mẫu exception_full.html.twig phát triển.

app/Resources/TwigBundle/views/Exception/exception_full.html.twig 

Symfony2 sử dụng mẫu này để cung cấp cho bạn nhiều thông tin gỡ lỗi nhất có thể trong quá trình phát triển.

Khi hạt nhân đang ở chế độ gỡ lỗi, Symfony2 sẽ sử dụng exception_full.html.twig, nếu không nó sẽ sử dụng các mẫu cụ thể mà bạn ghi đè.

Xem nhà cung cấp/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php, cụ thể là các hàm showAction() và findTemplate() để biết thêm chi tiết.

+0

Điều đó đã làm cho ngày của tôi. Cảm ơn bạn Chris. –

+0

Dường như trong Symfony 2.1, đường dẫn là: 'vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php' – arminrosu

+2

Tôi đã phải' cache: clear' để có được 'exception_full.html.twig' bị ghi đè (SF2.1) –

17

Để hiển thị các trang lỗi, trong web/app_dev.php thay đổi tham số thứ hai để false

$kernel = new AppKernel('dev', false); 

Sau khi thử nghiệm những gì bạn cần, thay đổi nó trở lại.


CẬP NHẬT

Cảm ơn @ user2019515 đã chỉ ra rằng - bây giờ (2.3 trở lên) có một liên kết đến WebfactoryExeptionsBundle trong Symfony docs và phương pháp tôi đã viết ở trên không nên được sử dụng.

+0

Điều này chắc chắn là con đường để đi nếu bạn muốn kiểm tra các trang lỗi của bạn trong env dev, vì chúng sẽ được sản xuất. – ftassi

+1

Theo tài liệu, bạn không nên làm điều này: http://symfony.com/doc/current/cookbook/controller/error_pages.html – user2019515

+0

Cảm ơn bạn đã chỉ ra điều đó, @ user2019515. Mặc dù, tôi không thể nhớ bây giờ chắc chắn, nhưng khi tôi viết câu trả lời này, không có trong tài liệu về WebfactoryExceptionsBundle - nó xuất hiện với 2.3 tài liệu. – CRONUS

0

Ngoài ra bạn có thể thêm các tuyến đường để routing_dev.yml bạn tập tin

error404: 
    path: /404 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error404.html.twig 

error500: 
    path: /500 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error500.html.twig 
Các vấn đề liên quan