Php 如何正确地覆盖异常处理行为?

Php 如何正确地覆盖异常处理行为?,php,laravel,exception-handling,laravel-5.6,php-7.2,Php,Laravel,Exception Handling,Laravel 5.6,Php 7.2,我刚刚阅读了Laravel5.6中的代码,我试图覆盖应用程序中404错误的行为。它几乎成功了,尽管还不是所有的东西都在工作 如文件所述: […]如果希望自定义404 HTTP状态代码的错误页面,请创建一个resources/views/errors/404.blade.php。此文件将用于处理应用程序生成的所有404错误 所以我做了,而且效果很好。。。问题是,应用程序调用视图时没有任何自定义变量,我想向它传递一个包含一些数据的数组,因此我填充HTML内容。所以我所做的是: 在Exception

我刚刚阅读了Laravel5.6中的代码,我试图覆盖应用程序中404错误的行为。它几乎成功了,尽管还不是所有的东西都在工作

如文件所述:

[…]如果希望自定义404 HTTP状态代码的错误页面,请创建一个resources/views/errors/404.blade.php。此文件将用于处理应用程序生成的所有404错误

所以我做了,而且效果很好。。。问题是,应用程序调用视图时没有任何自定义变量,我想向它传递一个包含一些数据的数组,因此我填充HTML内容。所以我所做的是:

在Exception Handler类中,我为Not found Exception(404)添加了一个IF:

在此控制器中:

public static function return404()
{
    return view('errors.404')
    ->with('boards', BoardController::getAll());
}

但是在视图中,
isset
方法仍然为变量
$boards
返回false。假设方法
BoardController::getAll()
正确返回其值,这里会有什么问题?

创建一个视图生成器提供程序,并从那里发送变量,如

namespace App\Providers;

use App\Controllers\BoardController;
use Illuminate\Support\ServiceProvider;

class ViewComposerProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer('errors::404', function($view)
        {
            $view->with([
                'boards' => BoardController::getAll()
            ]);
        });
    }


    public function register()
    {
    }
}
查看详细信息

namespace App\Providers;

use App\Controllers\BoardController;
use Illuminate\Support\ServiceProvider;

class ViewComposerProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer('errors::404', function($view)
        {
            $view->with([
                'boards' => BoardController::getAll()
            ]);
        });
    }


    public function register()
    {
    }
}