在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?
}
}
答案 0 :(得分:28)
您只需要查看Official documentation。
一些例外描述了来自服务器的HTTP错误代码。例如,这可能是未找到的页面"错误(404),"未经授权的错误" (401)甚至开发人员产生500错误。要返回此类响应,请使用以下命令:
abort(404);
您可以选择提供回复:
abort(403, 'Unauthorized action.');
此方法可以在请求的生命周期中随时使用。
要返回所有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 documentation和Symfony API documentation。