Bonjour,

Voila je souhaiterai désactiver le message de slim lors d'une erreur 500 particulière (erreur volontaire).

Ce que je fais

J'effectue un test de connexion à une base de données via PDO comme ceci :

try{
    $dbh = new \PDO($dsn, $user, $password);
}catch(PDOException $e){
    $this->alert('Impossible de se connecter à la base de données', 'danger');
    return $this->redirect($response, 'install', 400);
}

Ce que je veux et ce que j'obtiens

Si la connexion fonctionne, alors le controlleur continue, mais si la connexion echoue j'ai cette erreur venant de slim, que je ne souhaite pas avoir car je veux gérer cette erreur :

Slim Application Error
A website error has occurred. Sorry for the temporary inconvenience.

1 réponse


SimonDevelop
Auteur
Réponse acceptée

Alors j'ai trouver la solution, j'ai du faire comme ceci dans mon controlleur :

// En cas d'erreur de connexion
    $c = $this->container['container'];
    $c['errorHandler'] = function ($c) {
      return function ($request, $response, $methods) use ($c) {
        $this->alert('Impossible de se connecter à la base de données', 'danger');
        return $this->redirect($response, 'install', 400);
      };
    };

    $dbh = new \PDO($dsn, $user, $password);

par contre j'ai du ajouter cette ligne pour pouvoir avoir accès au container lui même dans mon controlleur :

$container['container'] = $app->getContainer();

J'avais oublié de préciser, mon projet slim est basé sur celui de la vidéo de grafikart :)