对于Laravel 5,App :: abort(404)等效吗?

时间:2015-10-03 12:01:29

标签: php laravel laravel-5 http-status-code-404

Laravel 4我过去只能打电话

App::abort(404)

Laravel 5中是否有等价物?

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

routes.php文件:

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

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

1 个答案:

答案 0 :(得分:28)

您只需要查看Official documentation

HTTP例外

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

abort(404);

您可以选择提供回复:

abort(403, 'Unauthorized action.');

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

自定义404错误页面

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

更新

似乎此功能已被删除,很快将被替换为书面here。 A"解决方法"可以创建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);

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

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

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