在 Symfony 4.4 中实现自定义错误控制器
Implement a custom error controller in Symfony 4.4
我做了什么:
我创建了这个自定义控制器,因为我想向错误页面传递一些额外的变量。
#Controller/CustomErrorControler.php
namespace App\Controller;
use App\Controller\Base\BaseController;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
class CustomErrorController extends BaseController
{
public function show(FlattenException $exception, DebugLoggerInterface $logger = null)
{
return $this->getView('bundles/TwigBundle/Exception/error.html.twig', [
"code" => $exception->getStatusCode(),
"message" =>$exception->getStatusText()
]);
}
}
和启用
#config/packages/framework.yaml
error_controller: App\Controller\CustomErrorController::show
我已经直接按照文档操作了。我的问题是,对于非生产阶段,我需要获取框架提供的默认异常模板。
我已经尝试扩展 Symfony\Component\HttpKernel\Controller\ErrorController
但我遇到了自动装配错误。
也许我应该使用 Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface
有什么想法可以实现吗?
通过为 Prod
使用不同的 framework.yaml
解决了这个问题
我做了什么:
我创建了这个自定义控制器,因为我想向错误页面传递一些额外的变量。
#Controller/CustomErrorControler.php
namespace App\Controller;
use App\Controller\Base\BaseController;
use Symfony\Component\ErrorHandler\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
class CustomErrorController extends BaseController
{
public function show(FlattenException $exception, DebugLoggerInterface $logger = null)
{
return $this->getView('bundles/TwigBundle/Exception/error.html.twig', [
"code" => $exception->getStatusCode(),
"message" =>$exception->getStatusText()
]);
}
}
和启用
#config/packages/framework.yaml
error_controller: App\Controller\CustomErrorController::show
我已经直接按照文档操作了。我的问题是,对于非生产阶段,我需要获取框架提供的默认异常模板。
我已经尝试扩展 Symfony\Component\HttpKernel\Controller\ErrorController
但我遇到了自动装配错误。
也许我应该使用 Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface
有什么想法可以实现吗?
通过为 Prod
使用不同的framework.yaml
解决了这个问题