2012-06-20 23 views
13

Tôi có một số gói và tôi muốn biết liệu có thể tùy chỉnh cho từng gói trang lỗi riêng của chúng.Symfony2: tùy chỉnh các trang lỗi cho các gói khác nhau

Tôi đọc sách nấu ăn và các ví dụ chỉ hiển thị trang tùy chỉnh chung cho tất cả các gói.

Có cách nào để ghi đè quá trình ngoại lệ cho từng gói không?

Trả lời

5

Chính người nghe sẽ phải phát hiện ra - Tôi không biết bất kỳ cách nào để chỉ định người nghe cho một gói.

<? 

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 
    } 
    } 
} 

Và đăng ký nó

//services.yml 
kernel.listener.yourlistener: 
    class: Your\MainBundle\YourExceptionListener 
    tags: 
    - { name: kernel.event_listener, event: kernel.exception, method: onKernelException } 
-1

Có một bó tôi đã thực hiện cho bắt lỗi các trang khác nhau từ cấu hình đường regex, nó hoạt động từ "kernel.exception_listener" người nghe và "kernel.exception "sự kiện như được mô tả trong tài liệu (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event).

Với gói này, bạn có thể:

  • Thay đổi mẫu cành lá ngoại lệ từ regex của tuyến đường bạn muốn
  • Thay đổi cành lá ngoại lệ mẫu cho certains http mã trạng thái chỉ
  • Enable/Disable các mẫu tùy chỉnh cho chế độ gỡ lỗi

Liên kết tới gói (giấy phép MIT): https://github.com/Kwrz/TwigException

Cảm ơn ý tưởng của bạn Peter, tôi nghĩ rằng thêm một tính năng trong phiên bản tiếp theo của nhóm của tôi để xác định mẫu từ không gian tên bó tương ứng.

Các vấn đề liên quan