从文档中我看到我只需要在resources/views/errors/
内创建新的刀片文件并使用abort(newhtmlerrorno)
如果我想使用其他目录中的刀片文件,这是可能的,还是必须位于基本应用resources/views/errors/
答案 0 :(得分:3)
在App\Exceptions\Handler
课程中,将其添加到渲染方法的开头:
public function render($request, Exception $e)
{
if ($this->isHttpException($e)) {
$statusCode = $e->getStatusCode();
return view("custom.path.{$statusCode}");
}
// ...
}
视图路径上的error
文件夹是Illuminate\Foundation\Exceptions\Handler
类中的硬编码,您的本地应用Handler
扩展了该类。因此,您无法在不覆盖该特定类的情况下配置自定义路径。
答案 1 :(得分:0)
找到文件App \ Exceptions \ Handler和replce函数,并在下面进行渲染
{{1}}
答案 2 :(得分:0)
Laravel 5.8中有一个方法\ Illuminate \ Foundation \ Exceptions \ Handler :: registerErrorViewPaths。您可以在\ App \ Exceptions \ Handler类中简单地覆盖它:
protected function registerErrorViewPaths()
{
$paths = collect(config('view.paths'));
View::replaceNamespace('errors', $paths->map(function ($path) {
return "{$path}/YOUR_CUSTOM_PATH/errors";
})->push(__DIR__.'/views')->all());
}