Ça me rend fou. Je travaille avec Laravel 5 et il semble que la documentation pour la version 4.2 et la génération de 404 pages ne fonctionne pas.
Tout d'abord, il n'y a pas de fichier global.php, j'ai donc essayé de mettre les éléments suivants dans routes.php:
App::missing(function($exception)
{
return Response::view('errors.missing', array(), 404);
});
Cela entraîne une erreur "méthode manquante () non trouvée"
Le débogage est défini sur false.
J'ai cherché et cherché mais je n'ai pas trouvé d'information sur la définition de 404 pages dans Laravel 5. Nous apprécierions votre aide.
Allez dans ressources/vues/erreurs et créez un fichier 404.blade.php avec ce que vous voulez sur votre page 404 et Laravel s’occupe du reste.
si vous voulez avoir une solution globale, vous pouvez faire des changements dans /app/Exceptions/Handler.php en ajoutant du code ci-dessous
public function render($request, Exception $e)
{
if ($this->isHttpException($e)) {
$statusCode = $e->getStatusCode();
switch ($statusCode) {
case '404':
return response()->view('layouts/index', [
'content' => view('errors/404')
]);
}
}
return parent::render($request, $e);
}
J'aime l'approche de la déclaration de cas, mais certains problèmes sont à résoudre.
Cependant, cela intercepte toutes les erreurs:
Route::any('/{page?}',function(){
return View::make('errors.404');
})->where('page','.*');
Laravel 5 a déjà une méthode de rendu prédéfinie (ligne 43) sous app/Exceptions/Handler.php. Insérez simplement le code de redirection avant parent :: render. Ainsi,
public function render($request, Exception $e)
{
if ($e instanceof ModelNotFoundException)
{
$e = new NotFoundHttpException($e->getMessage(), $e);
}
//insert this snippet
if ($this->isHttpException($e))
{
$statusCode = $e->getStatusCode();
switch ($statusCode)
{
case '404': return response()->view('error', array(), 404);
}
}
return parent::render($request, $e);
}
Remarque: Mon vue est sous ressources/vues. Vous pouvez en quelque sorte le mettre où vous voulez.
Dans Laravel 5, vous pouvez simplement mettre un 404.blade.php sous ressources/vues/erreurs et c’est tout. Pour d’autres erreurs comme 500, vous pouvez essayer ce qui suit dans votre app/Exeptions/Handler.php :
public function render($request, Exception $e)
{
if ( ! config('app.debug') && ! $this->isHttpException($e)) {
return response()->view('errors.500');
}
return parent::render($request, $e);
}
Et faites de même pour 500 exeptions HTTP