【问题标题】:App::abort(404) equivalent for Laravel 5?App::abort(404) 等效于 Laravel 5?
【发布时间】:2015-12-31 13:23:39
【问题描述】:

Laravel 4我曾经可以简单地调用

App::abort(404)

Laravel 5 中是否有等价物?

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

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

【问题讨论】:

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


    【解决方案1】:

    您只需查看Official documentation

    HTTP 异常

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

    abort(404);
    

    您可以选择提供回复:

    abort(403, 'Unauthorized action.');
    

    这个方法可以在请求生命周期的任何时候使用。

    自定义 404 错误页面

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

    更新

    似乎这个功能已经被删除,很快就会被替换为here。 “解决方法”可以是创建 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

    【讨论】:

    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2012-02-15
    • 2020-11-28
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多