2015-03-16 3 views
0

Я прочитал Symfony (http://symfony.com/doc/current/cookbook/controller/error_pages.html#testing-error-pagesdocumentation) и сделал то, что они говорят:Symfony ошибка пользовательская настройка 404 и 500

я создал 2 файла, error404.html.twig и error500.html.twig в каталоге (MyProject)/приложение/Ресурсы/TwigBundle/просмотров/Исключение/

И я изменил routing_dev.yml файл так:

_wdt: 
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 
    prefix: /_wdt 

_profiler: 
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 
    prefix: /_profiler 

_configurator: 
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" 
    prefix: /_configurator 

_main: 
    resource: routing.yml 

_errors: 
    resource: "@TwigBundle/Resources/config/routing/errors.xml" 
    prefix: /_error 

Когда я пытаюсь увидеть, как это выглядит с http://localhost:8080/portfolio/web/app_dev.php/_error/404

я получаю следующее сообщение об ошибке:

FileLoaderLoadException: Не удается импортировать ресурс "@ TwigBundle/Ресурсы/конфигурации/маршрутизации/errors.xml" из "C: \ XAMPP \ HTDOCS \ портфель \ приложение/Config/routing_dev.yml" , Убедитесь, что пакет «TwigBundle/Resources/config/routing/errors.xml» правильно зарегистрирован и загружен в класс ядра приложения.

Я проверил файл AppKernel.php и, кажется, twigBundle импортируется:

<?php 

use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Config\Loader\LoaderInterface; 

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      new Symfony\Bundle\TwigBundle\TwigBundle(), 
      new Symfony\Bundle\MonologBundle\MonologBundle(), 
      new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
      new Symfony\Bundle\AsseticBundle\AsseticBundle(), 
      new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
      new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
      new AppBundle\AppBundle(), 
      new PublicBundle\PublicBundle(), 
      new AdminBundle\AdminBundle(), 
     ); 

     if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
      $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
      $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
     } 

     return $bundles; 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) 
    { 
     $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); 
    } 
} 

Что Probleme?

+0

Страницы с ошибкой будут одинаковыми для всех пользователей или только для некоторых пользователей? Если он одинаковый для всех пользователей, вам не нужно переопределять twigbundle или создавать маршрут для него. –

ответ

0

Вы можете сделать это без создания настраиваемого пакета для этого, если это необходимо.

http://symfony.com/doc/current/cookbook/controller/error_pages.html

создать error.html.twig под приложение/Ресурсы/TwigBundle/просмотров/Exception/error.html.twig и так далее для других специальных ошибок, таких как: приложение/Resources/TwigBundle/Views/Exception /error404.html.twig

0

Я нашел проблему. Это действительно смешно.

Я использую Symfony 2.5.2, тем но функции я пытался использовать было для Symfony 2.6

Так что я создал новый проект в 2.6, заменить и др перенастроить свои папки и файлы и БУМ! это wotks!

Смежные вопросы