2012-05-18 10 views
9

Voglio lavorare sulla pagina 404 dall'ambiente dev. Personalizzo 404 utilizzando questo file: app/Resources/TwigBundle/views/Exception/error.html.twigSymfony2 mostra la pagina di errore 404 nel dev

Questo lavoro url prod correttamente: mysite.com/404

Ma questo mysite.com/app_dev.php/404 gettare un NotFoundHttpException e mi danno la pagina di debug di dev.

È possibile visualizzare la pagina di errore anziché la pagina di debug?

UPDATE:

La documentazione ufficiale come ora un capitolo al riguardo: Testing Error Pages during Development

+0

Override 'app/Resources/TwigBundle/views/Exception/exception.html.twig' pure? – meze

risposta

10

As of Symfony2.6 nell'ambiente dev, è possibile utilizzare il seguente percorso:

/_error/404.html 

Dove 404 è il codice di errore per testare e html il formato della richiesta. Per poter utilizzare questa funzionalità, assicurarsi di avere la seguente voce nel file routing_dev.yml:

# app/config/routing_dev.yml 
_errors: 
    resource: "@TwigBundle/Resources/config/routing/errors.xml" 
    prefix: /_error 
13

È necessario sovrascrivere il template exception_full.html.twig sullo sviluppo.

app/Resources/TwigBundle/views/Exception/exception_full.html.twig 

Symfony2 utilizza questo modello per fornire quante più informazioni di debug possibile durante lo sviluppo.

Quando il kernel è in modalità di debug, Symfony2 utilizzerà exception_full.html.twig, altrimenti utilizzerà i modelli specifici che si sovrascrivono.

Vedere fornitore/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php, in particolare le funzioni showAction() e findTemplate() per ulteriori dettagli.

+0

Questa è la mia giornata. Grazie Chris. –

+0

Sembra in Symfony 2.1, il percorso è: 'vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php' – arminrosu

+2

Ho dovuto' cache: clear' per avere il 'exception_full.html.twig' da sovrascrivere (SF2.1) –

17

Per visualizzare le pagine di errore, in web/app_dev.php cambiare secondo parametro di false

$kernel = new AppKernel('dev', false); 

Dopo aver testato ciò che è necessario, cambiare di nuovo.


UPDATE

Grazie @ user2019515 per la segnalazione - ora (2.3 in su) c'è un link per WebfactoryExeptionsBundle nel Symfony docs e il metodo che ho scritto sopra, non dovrebbe essere usato.

+0

Questa è sicuramente la strada da percorrere se si desidera testare le pagine di errore in dev env, come saranno in prod. – ftassi

+1

Secondo i documenti, non dovresti farlo: http://symfony.com/doc/current/cookbook/controller/error_pages.html – user2019515

+0

Grazie per averlo indicato, @ user2019515. Però, non posso ricordarlo adesso, ma quando ho scritto questa risposta, non c'erano documenti su WebfactoryExceptionsBundle - è apparso con la documentazione 2.3. – CRONUS

0

Inoltre è possibile aggiungere percorsi al vostro routing_dev.yml file di

error404: 
    path: /404 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error404.html.twig 

error500: 
    path: /500 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error500.html.twig