2

У меня есть прослушиватель событий, подключенный к событию kernel.request. В методе запроса onKernel я делаю некоторые проверки на основе субдомена. Если эта проверка не выполняется, я хочу сделать какое-то исключение, например AccessDenied или что-то в этом роде.symfony2 throwing exception from onKernelRequest возвращает пустую страницу

Проблема заключается в том, когда я бросаю исключение, она показывает пустую страницу вместо моей пользовательской страницы ошибок.

Если я просматриваю файл prod.log я получаю следующую информацию:

[2013-06-06 11:08:38] request.ERROR: Exception thrown when handling an exception (Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: This route needs to be accessed with a subdomain) [] [] 
[2013-06-06 11:16:32] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "This route needs to be accessed with a subdomain" at (...) line 86 [] [] 

Что мне не хватает? Благодарим за помощь

+0

Вы находитесь в режиме 'dev' и включили отчет об ошибках в своем' php.ini'? Странно, что у вас пустая страница. – julesbou

+0

нет, в среде dev он показывает ошибки. Это не вопрос. Я хочу настроить страницы ошибок, которые отображаются в процессе производства, например, когда генерируется исключение, показать что-то вроде «Ошибка, возникшая в приложении». – brpaz

ответ

2

Исключения не обнаружены во время событий kernel.request. Вы можете возвратить ответ вместо:

class SubdomainSubscriber implements EventSubscriberInterface 
{ 

    public static function getSubscribedEvents() 
    { 
     return [ 
      'kernel.request' => 'onRequest', 
     ]; 
    } 

    public function onRequest(GetResponseEvent $event) 
    { 
     if (!$subdomainValid) { 
      $event->setResponse(new Response('Invalid subdomain!', 403)); 
     } 
    } 
} 

Хотя этот пример является EventSubscriber он работает с слушателем, тоже.