首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8-当控制器不存在时,显示自定义404刀片页

Laravel 8-当控制器不存在时,显示自定义404刀片页
EN

Stack Overflow用户
提问于 2021-03-23 05:30:30
回答 6查看 2.6K关注 0票数 2

如果没有控制器操作,则可以将其检查为

代码语言:javascript
复制
if(! method_exists($controller, $action)) {
    return 404;
}

但是当有没有控制器时,我得到了这个错误

代码语言:javascript
复制
Illuminate\Contracts\Container\BindingResolutionException
Target class [\App\Http\Controllers\DashboardController] does not exist.

但是,是否有可能显示自定义的404刀片页面呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-03-27 14:31:43

正如Droid所指出的,

  • .env文件中设置APP_DEBUG=false .

然后,

  • 在命令提示符中使用php artisan vendor:publish --tag=laravel-errors (存储项目的位置)。所有的Laravel设计的错误页面(40倍,50倍,等等)将显示.

在这里的

  • ,根据您的定制这些页面

从那时起,不管有什么错误消息,不管您是否处理了您的URL,或者服务器端发生了什么,您都会看到您的自定义错误页面。

票数 2
EN

Stack Overflow用户

发布于 2021-03-23 05:53:39

因此,所有默认的Laravel错误页面都可以找到./vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views

您可以运行此命令来自己发布错误视图页并自定义它们。php artisan vendor:publish --tag=laravel-errors,那么它们将被定位为./resources/views/errors

另外,您应该使用abort(404)而不是返回404。这将在您的render中触发App\Exceptions\Handler,如果您没有覆盖此方法,它将使用Laravel默认值。但是要覆盖你可以做到

代码语言:javascript
复制
app/Exceptions/Handler.php

public function render($request, Throwable $exception)

{
    $response = parent::render($request, $exception);

    if (response->status() === 404) {
        // return something custom
    }

    return $response;
}

您可以在这里跟踪文档,https://laravel.com/docs/8.x/errors#custom-http-error-pages。希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2021-03-23 05:53:38

尝尝这个

代码语言:javascript
复制
Route::any('/', function () {
    //
});

for unknown controller and make a view 


[documentation][1] :https://laravel.com/docs/8.x/routing
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66757758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档