【问题标题】:Laravel different 404 pages for different namespaces/route-groupsLaravel 不同的 404 页面用于不同的命名空间/路由组
【发布时间】:2016-11-14 00:54:11
【问题描述】:

我在 Laravel 中有三个不同的 Http 命名空间:前端、后端和 API。每个路由组也有不同的命名空间。这是来自 RouteServiceProvider 的示例代码(前端路由组):

protected function mapFrontendRoutes(Router $router) {
    $router->group([
        'namespace' => 'App\Http\Controllers\Frontend',
        'middleware' => 'web',
    ], function ($router) {
        require app_path('Http/Routes/frontend.php');
    });
}

现在,我想为这些命名空间/路由组设置三个不同的 404 页面:

  • API - 以 JSON 格式显示 404 响应
  • 前端 - 错误/404.blade.php
  • 后端 - 在 backend/errors/404.blade.php 中有一个单独的视图

如何创建这些?我一直在网上搜索,但没有找到任何关于此的内容。

Laravel 版本:5.2

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以通过在App\Exceptions\Handler 中覆盖(添加)renderHttpException 方法来实现。该方法接收HttpException作为参数并返回响应。

    类似这样的:

    protected function renderHttpException(HttpException $e) {
    
        $status = $e->getStatusCode();
    
        if (Request::ajax() || Request::wantsJson()) {
            return response()->json([], $status);
        } else if(Request::is('/backend/*')) { //Chane to your backend your !
            return response()->view("backend/errors.{$status}", ['exception' => $e], $status, $e->getHeaders());
        }else {
            return response()->view("errors.{$status}", ['exception' => $e], $status, $e->getHeaders());
        }
    
    }
    

    【讨论】:

    • 请查看我添加了一些代码的更新答案!
    猜你喜欢
    • 1970-01-01
    • 2018-01-04
    • 2021-05-12
    • 2017-06-17
    • 2018-05-05
    • 2020-04-14
    • 1970-01-01
    • 2018-10-20
    • 2020-10-20
    相关资源
    最近更新 更多