我想在我的Laravel 5应用程序中显示自定义错误页面;例如任何用户类型的URL,如CCD_ 1(错误)但CCD_。
默认错误显示为:
哦,出了问题!错误代码:500
但相反,我想显示我的自定义视图
我如何实现这一点,如下面引用的页面所示:
https://mattstauffer.co/blog/laravel-5.0-custom-error-pages#how-至
https://laracasts.com/discuss/channels/general-discussion/how-do-i-create-a-custom-404-error-page
我当前的app/Exceptions/Handler.php
:
<?php
namespace App'Exceptions;
use Exception;
use Illuminate'Foundation'Exceptions'Handler as ExceptionHandler;
use symfony'http-kernel'Symfony'Component'HttpKernel'Exception'NotFoundHttpException;
class Handler extends ExceptionHandler {
protected $dontReport = [
'Symfony'Component'HttpKernel'Exception'HttpException'
];
public function report(Exception $e)
{
return parent::report($e);
}
public function render($request, Exception $e)
{
if ($this->isHttpException($e))
{
return $this->renderHttpException($e);
}
else if($e instanceof NotFoundHttpException)
{
return response()->view('missing', [], 404);
}
else
{
return parent::render($request, $e);
}
}
}
我已经在'resources'views'errors'404.blade.php
创建了一个错误视图,但404.blade.php
仍然没有加载。
Im使用Laravel 6.4,为此,您可以创建自定义错误页面刀片文件,剩下的工作由Laravel完成。在项目目录中运行以下命令
php artisan vendor:publish --tag=laravel-errors
这将在resources/views/errors/.
中创建刀片文件,例如在resources/views/errors/404.blade.php.
中有404错误。现在假设您希望在示例代码中传递Not Found Error,例如返回后类别的函数
/**
* Display the specified resource.
*
* @param int $id
* @return 'Illuminate'Http'Response
*/
public function show($id)
{
$count = Post::find($id)->count();
if ($count < 1) return abort('404', 'The post you are looking for was not found');
}
abort()
方法将触发加载刀片文件resources/views/errors/404.blade.php
并将第二个参数作为消息传入的未找到异常。您可以作为访问刀片文件中的此消息
<h2>{{ $exception->getMessage() }}</h2>
有关详细信息,请访问此链接(官方文档)https://laravel.com/docs/6.x/errors#custom-http错误页面
谢谢大家,现在它正在成功工作,
我只是更改了app/Exceptions/Handler.php:
<?php
namespace App'Exceptions;
use Exception;
use Illuminate'Foundation'Exceptions'Handler as ExceptionHandler;
class Handler extends ExceptionHandler {
protected $dontReport = [
'Symfony'Component'HttpKernel'Exception'HttpException'
];
public function report(Exception $e)
{
return parent::report($e);
}
public function render($request, Exception $e)
{
if ($this->isHttpException($e)) {
return $this->renderHttpException($e);
} else {
return parent::render($request, $e);
}
}
}
并在''resources''views''errors''404.blade.php 上创建一个错误视图
首先需要键入命令php手工厂商:发布--tag=laravel错误
它将在资源/视图/错误中创建一些错误刀片文件,如404500403401419429503。您可以根据自己的设计要求自定义这些页面。
app/Exceptions/Handler.php
public function render($request, Throwable $exception)
{
$response = parent::render($request, $exception);
if ($response->status() === 500) {
return response(view('errors.500'), 500);
}
return $response;
}
app/config/app.php
'debug'=>(bool)env('APP_DEBUG',false)
注意:不要在视图文件夹中手动创建错误文件夹,因为有些库文件不是在供应商文件夹中创建的。这就是抛出错误的原因。请只执行拉拉威尔命令。
这在Laravel 5.5:-中对我有效
/config/contents.php
define('ERROR_MSG_403', "You are not authorized to view that page!");
define('ERROR_MSG_404', "Page not found!");
define('ERROR_MSG_UNKNOWN', "Something went wrong!");
/app/Exceptions/Handler.php
public function render($request, Exception $e)
{
$response = [];
$response['exception'] = get_class($e);
$response['status_code'] = $e->getStatusCode();
switch($response['status_code'])
{
case 403:
$response['message'] = ERROR_MSG_403;
break;
case 404:
$response['message'] = ERROR_MSG_404;
break;
default:
$response['message'] = ERROR_MSG_UNKNOWN;
break;
}
return response()->view('Error.error', compact('response'));
// return parent::render($request, $exception);
}
/resources/views/Error/Error.blade.php
<?=dd($response); //Implement your view layout here?>