Пользовательская страница 404 с Silex не отображается в рабочей конфигурации

Я немного борюсь, пытаясь отобразить пользовательскую страницу ошибки 404, используя структуру Silex micro -.

Мой проект настроен следующим образом:

  • получил страницу index.php для запуска в рабочем режиме с загрузкой файла конфигурации prod.php
  • получил индекс _dev.php для запуска в режиме отладки . Он также использует файл конфигурации prod.php, но некоторые настройки переопределяются файлом dev.php, например, для $app['debug']устанавливается значение true .

Так что в основном конфигурация та же.

Я определил обработчик ошибок следующим образом:

$app->error(function (\Exception $e, $code) use ($app) {

    // commented for testing purposes
    /*if ($app['debug']) {
        return;
    }*/

    if ($code == 404) {

        $loader = $app['dataloader'];
        $data = array(
            'global' => $loader->load('global'),
            'common' => $loader->load('common', $app['locale']),
            'header' => $loader->load('header', $app['locale']),
            'footer' => $loader->load('footer', $app['locale'])
        );

        return new Response( $app['twig']->render('404.html.twig', array( 'data' => $data )), 404);
    }

    return new Response('We are sorry, but something went terribly wrong.', $code);

});

При попытке получить доступ к http://localhost:8888/index_dev.php/my-non-existing-pageмой шаблон 404 обрабатывается и отображается, как и ожидалось.

При попытке получить доступ к http://localhost:8888/my-non-existing-pageмой шаблон 404 не отображается, и вместо этого я получаю стандартную страницу ошибки 404!

Может быть трудно мне помочь. Не стесняйтесь спрашивать более подробную информацию, если это необходимо. Я просто хочу лучше понять, что на самом деле здесь происходит.

5
задан Didier Ghys 13 August 2012 в 08:41
поделиться