web-dev-qa-db-fra.com

App :: abort (404) équivalent pour Laravel 5?

Dans Laravel 4 je pouvais simplement appeler

App::abort(404)

Y a-t-il un équivalent dans Laravel 5?

Il semble y avoir des informations étonnamment limitées à ce sujet au moment de la rédaction du présent document. J'ai trouvé des discussions sur la façon de attraper NotFoundHttpExceptions mais ce n'est pas ce que je veux, car la structure d'URL est déjà traitée par mes routes. php fichier. Pour donner un peu plus d'informations, voici une version simplifiée de ce que j'essaie de faire:

Routes.php:

Route::get('/info/{page}', array('as' => 'info', 'uses' => 'Primary@infoPage'));

Primary.php (contrôleur)

public function infoPage($page){
    $pageData = DB::table('pages')->where('url_title', $page)->first();
    if(!empty($pageData)){
       // great, there's a corresponding row in the database for this page, go ahead and do stuff...
    }else {
       // This page doesn't exist, please abort with a 404 error... but how?
    }
}
15
Inigo

Il suffit de regarder le Documentation officielle .

Exceptions HTTP

Certaines exceptions décrivent les codes d'erreur HTTP du serveur. Par exemple, cela peut être une erreur "page non trouvée" (404), une "erreur non autorisée" (401) ou même une erreur 500 générée par le développeur. Afin de renvoyer une telle réponse, utilisez ce qui suit:

abort(404);

Facultativement, vous pouvez fournir une réponse:

abort(403, 'Unauthorized action.');

Cette méthode peut être utilisée à tout moment pendant le cycle de vie de la demande.

Page d'erreur 404 personnalisée

Pour renvoyer une vue personnalisée pour toutes les erreurs 404, créez un resources/views/errors/404.blade.php fichier. Cette vue sera diffusée sur toutes les 404 erreurs générées par votre application.

Mise à jour

Semble que cette fonction a été supprimée et sera bientôt remplacée comme écrit ici . Une "solution de contournement" peut créer une réponse 404.

Création de réponses personnalisées

Pour la plupart des routes et des actions du contrôleur, vous retournerez un Illuminate\Http\Response instance ou une vue. Le renvoi d'une instance complète de Response vous permet de personnaliser le code d'état HTTP et les en-têtes de la réponse. Une instance Response hérite de Symfony\Component\HttpFoundation\Response classe, fournissant une variété de méthodes pour créer des réponses HTTP:

use Illuminate\Http\Response;

return (new Response($content, $status))
    ->header('Content-Type', $value);

Pour plus de commodité, vous pouvez également utiliser l'aide à la réponse:

return response($content, $status)
    ->header('Content-Type', $value);

Remarque : Pour une liste complète des méthodes de réponse disponibles, consultez ses documentation API et documentation Symfony API .

30
IlGala