我刚刚阅读了laravel 5.6中的documentation about errors,并且试图覆盖应用程序中404错误的行为。尽管不是所有的事情都还在工作,但它几乎是成功的。
文档说明:
[...]如果您希望为404 HTTP状态代码自定义错误页面,请创建一个resources / views / errors / 404.blade.php。该文件将处理您的应用程序生成的所有404错误。
所以我做到了,它工作得很好...问题是应用程序调用了没有任何自定义变量的视图,我想将包含一些数据的数组传递给它,所以我填充了HTML内容。所以我做了什么:
在“异常处理程序”类中,我为未找到异常(404)的情况添加了一个IF:
public function report(Exception $exception) {
if($this->isHttpException($exception) && $exception->getStatusCode() == 404){
return PagesController::return404();
}
parent::report($exception);
}
在控制器中:
public static function return404()
{
return view('errors.404')
->with('boards', BoardController::getAll());
}
但是在视图内部,isset
方法对于变量$boards
仍然返回false。假设方法BoardController::getAll()
正确返回了它的值,那么这里可能出什么问题了?
答案 0 :(得分:3)
创建一个View Composer提供程序,然后像
一样从那里发送变量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()
{
}
}