2012-06-20 12 views
13

मेरे पास कई बंडल हैं और मैं जानना चाहता हूं कि प्रत्येक बंडल के लिए अपने स्वयं के त्रुटि पृष्ठों के लिए अनुकूलित करना है या नहीं।Symfony2: विभिन्न बंडलों के लिए त्रुटि पृष्ठों को कस्टमाइज़ करें

मैंने कुकबुक पढ़ा और उदाहरण सभी बंडलों के लिए केवल एक सामान्य कस्टमाइज़ पेज दिखाते हैं।

क्या प्रत्येक बंडल के लिए अपवाद प्रक्रिया को ओवरराइड करने का कोई तरीका है?

उत्तर

5

श्रोता को स्वयं ही इसका पता लगाना होगा - मुझे एक बंडल के लिए श्रोता निर्दिष्ट करने के किसी भी तरीके से अवगत नहीं है।

<? 

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

और रजिस्टर यह

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

वहाँ एक बंडल मैं मार्गों regex विन्यास से पकड़ विभिन्न त्रुटियों पृष्ठों के लिए बनाया है है, यह "kernel.exception_listener" श्रोता और "kernel.exception से काम करता है "दस्तावेज में वर्णित घटना (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event)।

इस बंडल के साथ

, आप कर सकते हैं:

  • बदलें मार्ग की regex से टहनी अपवाद टेम्पलेट आप
  • बदलें certains HTTP स्थिति कोड के लिए टहनी अपवाद टेम्पलेट केवल
  • सक्रिय/निष्क्रिय चाहते हैं https://github.com/Kwrz/TwigException

    : डिबग मोड

लिंक बंडल करने के लिए (एमआईटी लाइसेंस) के लिए कस्टम टेम्पलेट

आपके विचार पीटर के लिए धन्यवाद, मुझे लगता है कि संबंधित बंडल नेमस्पेस से टेम्पलेट को परिभाषित करने के लिए मेरे बंडल के अगले संस्करण में एक सुविधा जोड़ें।

संबंधित मुद्दे