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

在我过去能够简单地打电话Laravel 4

App::abort(404)

中是否有等效项?Laravel 5

在撰写本文时,关于这一点的信息似乎非常有限。我已经找到了关于如何捕获NotFoundHttpExceptions的讨论,但这不是我想要的,因为url结构已经由我的路由.php文件处理。为了提供更多的背景知识,以下是我正在尝试执行的操作的简化版本:

路线.php:

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

主.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?
    }
}

答案 1

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

HTTP 异常

某些例外情况描述了来自服务器的 HTTP 错误代码。例如,这可能是“找不到页面”错误(404),“未经授权的错误”(401)甚至开发人员生成的500错误。要返回此类响应,请使用以下命令:

abort(404);

(可选)您可以提供响应:

abort(403, 'Unauthorized action.');

此方法可以在请求的生命周期内随时使用。

自定义 404 错误页面

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

更新

似乎此函数已被删除,并将很快被替换为此处所写的内容。“解决方法”可以是创建 404 响应。

创建自定义响应

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

use Illuminate\Http\Response;

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

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

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

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


答案 2

推荐