对于Laravel 5,App :: abort(404)相当于?

Ini*_*igo 16 php http-status-code-404 laravel laravel-5

Laravel 4我曾经能够简单地打电话

App::abort(404)
Run Code Online (Sandbox Code Playgroud)

有没有等价的Laravel 5

在撰写本文时,似乎有令人惊讶的有限信息.我已经找到了关于如何捕获NotFoundHttpExceptions的讨论,但这不是我想要的,因为我的routes.php文件已经处理了url结构.为了给出更多背景知识,这里是我想要做的简化版本:

routes.php文件:

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

Primary.php(控制器)

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?
    }
}
Run Code Online (Sandbox Code Playgroud)

IlG*_*ala 31

您只需查看官方文档即可.

HTTP例外

一些例外描述了来自服务器的HTTP错误代码.例如,这可能是"未找到页面"错误(404),"未授权错误"(401)或甚至是开发者生成500错误.要返回此类响应,请使用以下命令:

abort(404);
Run Code Online (Sandbox Code Playgroud)

您可以选择提供回复:

abort(403, 'Unauthorized action.');
Run Code Online (Sandbox Code Playgroud)

可以在请求的生命周期中的任何时间使用此方法.

自定义404错误页面

要返回所有404错误的自定义视图,请创建一个resources/views/errors/404.blade.php文件.此视图将在您的应用程序生成的所有404错误中提供.

更新

似乎此功能已被删除,很快将被替换为此处所写的."解决方法"可以创建404响应.

创建自定义响应

对于大多数路由和控制器操作,您将返回完整Illuminate\Http\Response实例或视图.返回完整Response实例允许您自定义响应的HTTP状态代码和标头.一个Response实例从继承Symfony\Component\HttpFoundation\Response类,用于构建HTTP响应提供了多种方法:

use Illuminate\Http\Response;

return (new Response($content, $status))
    ->header('Content-Type', $value);
Run Code Online (Sandbox Code Playgroud)

为方便起见,您还可以使用响应帮助程序:

return response($content, $status)
    ->header('Content-Type', $value);
Run Code Online (Sandbox Code Playgroud)

注意:有关可用响应方法的完整列表,请查看其API文档Symfony API文档.

  • @Ingo如果使用`abort(404)`,将抛出`NotFoundHttpException`. (2认同)