The symfony Cookbook

Hoe kan je je eigen error templates maken

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


About

You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.

Master symfony

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com

Books on symfony

Learn more about symfony with the official guides.
books.sensiolabs.com

L'audit Qualité par SensioLabs

200 points de contrôle de votre applicatif web.
audit.sensiolabs.com
symfony training
Be trained by symfony experts
May 29: Paris (Web Development with Symfony2 - Français)
May 31: Paris (Mastering Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - English)
Jun 06: Paris (Going Further with Symfony2 - English)
and more...

Search


powered by google
You are currently browsing "The symfony Cookbook" in Dutch for the 1.2 version - Switch to version: - Switch to language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed.
This version of symfony is not maintained anymore.
If some of your projects still use this version, consider upgrading as soon as possible.

Wanneer een fout optreed, of het nou een pagina is die niet gevonden wordt, een internal server error, of een andere uitzondering, symfony zal een foutmeldingspagina weergeven. De inhoud van de pagina is afhankelijk van de omgeving en het formaat van de request.

Laten we een voorbeeld nemen om het makkelijk te maken om uit te leggen. Je hebt een applicatie met een API module die HTML, XML of JSON representatie teruggeeft van een Article model.

Here is de routing configuratie die het laat werken:

// apps/frontend/config/routing.yml
api_article:
  url:   /api/article/:id.:sf_format
  param: { module: api, action: article }
  requirements:
    sf_format: (?:html|xml|json)

En de bijbehorende module:

class apiActions extends sfActions
{
  public function executeArticle($request)
  {
    $this->article = ArticlePeer::retrieveByPK($request->getParameter('id'));
 
    $this->forward404Unless($this->article);
  }
 
  // ...
}

Wanneer je een niet bestaande id meegeeft in de request, zal de actie worden doorgestuurd naar de 404 pagina. Als je het HTML formaat gebruikt (http://localhost/frontend_dev.php/api/article/1.html) in de ontwikkelomgeving, dan zal je een foutmelding krijgen die er zo uitziet:

404.html in de ontwikkelomgeving

In de productie omgeving (http://localhost/frontend_dev.php/api/article/1.html), zal de pagina voor veiligheidsredenen er erg anders uit zien:

404.html in de productieomgeving

Laten we eens kijken hoe het werkt als we het formaat naar XML zetten in de ontwikkelomgeving (http://localhost/frontend_dev.php/api/article/1.xml):

404.xml in de ontwikkelomgeving

En nu in de productieomgeving (http://localhost/api/article/1.xml):

404.xml in de productieomgeving

Zoals je zelf kan zien is de foutmelding die nu terug wordt gestuurd door symfony in het opgevraagde formaat, XML.

Dit voorbeeld zal demonstreren hoe je de foutmelding kan aanpassen voor een 404 pagina, maar hetzelfde geld voor elke andere niet afgevangen exception.

Je kan zelfs van ieder formaat de output aanpassen door templates aan de project directory (config/error/) of applicatie directory (apps/frontend/config/error) toe te voegen.

Bijvoorbeeld, om de output voor XML foutmeldingen aan te passen, maak een config/error/error.xml.php bestand aan. Symfony is slim genoeg om de aangepaste template te gebruiken wanneer die bestaan in plaats van de standaard:

<?xml version="1.0" encoding="<?php echo sfConfig::get('sf_charset', 'UTF-8') ?>"?>
<error>
   <code><?php echo $code ?></code>
   <message><?php echo $text ?></message>
</error>

404.xml aangepast in de productieomgeving

Wanneer je een eigen foutmeldingstemplate maakt, heb je de beschikking over de volgende variabelen:

Het is ook mogelijk om de output van de ontwikkelomgeving aan te passen, zelfs al is dit minder interessant, door het aanmaken van een config/error/exception.xml.php bestand.

De standaard templates staan in de lib/exception/data/ directory van symfony en zijn een goed startpunt voor aangepaste templates.

Wanneer je je eigen formaat maakt, zal je de foutmeldingstemplates voor dit formaat zelf moeten maken (config/error/error.FORMAAT_NAAM.php en config/error/exception.FORMAAT_NAAM.php).

Om deze taak makkelijker te maken, kan je bestaande error templates includen. Bijvoorbeeld, als je formaat lijkt op XML, kan je de standaard XML foutmeldingstemplates includen:

<?php include sfException::getTemplatePathForError('xml', true) ?>

Formaat ondersteuning is nog een voorbeeld van symfony 1.2 die HTTP zo veel mogelijk omarmt.

Questions & Feedback

If you find a typo or an error, please register and open a ticket.

If you need support or have a technical question, please post to the official user mailing-list.