- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何仅为 PROD 环境设置自定义错误页面?我想显示用于生产的自定义环境,但显示普通环境,但开发环境除外。
有什么想法吗?
最佳答案
我遇到了同样的问题,解决方案非常简单。您必须修改参数twig.exception_listener.contoller
以将错误页面的渲染重定向到您自己的 Controller ,这可能会扩展原始Twig异常 Controller 。
示例(YourBundle/Resources/config/services.xml
):
<parameter key="twig.exception_listener.controller">YourBundle\Controller\ExceptionController::showAction</parameter>
然后,您必须使用 showAction
方法创建自己的 ExceptionController,检查环境并执行您想要执行的操作,或者将请求传递给 parent::showAction()
。
namespace YourBundle\Controller;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController;
use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference;
use Symfony\Component\HttpKernel\Exception\FlattenException;
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
use Symfony\Component\HttpFoundation\Response;
class ExceptionController extends BaseExceptionController {
public function showAction(FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html') {
$kernel = $this->container->get('kernel');
if ($kernel->getEnvironment() == 'prod') {
$request = $this->container->get('request');
$request->setRequestFormat($format);
$templating = $this->container->get('templating');
$code = $exception->getStatusCode();
$template = new TemplateReference('YourBundle', 'Exception', 'errorpage', $format, 'twig');
if ($templating->exists($template)) {
$response = $templating->renderResponse($template, array(
'status_code' => $code,
'message_code' => 'error_' . $code,
'status_text' => Response::$statusTexts[$code],
'requested_url' => $request->getUri(),
));
$response->setStatusCode($code);
$response->headers->replace($exception->getHeaders());
return $response;
}
}
return parent::showAction($exception, $logger, $format);
}
}
请注意 errorpage.html.twig 中的错误,因为 twig 处理中的异常不会像平常一样处理。
关于symfony - 仅适用于 PROD 环境的自定义错误页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472482/
在 Angular 2 中,我相信你必须使用: enableProductionMode() 我在我的 environment.prod.ts 文件中调用它。 然后我可以调用: ng b -prod
我正在使用 docker,所以在生产模式下,我使用链接容器,其 URL 为“http://api:3000/” 而不是“http://localhost:3000/”在开发模式下。 如果“ng bui
每当我进行更改时,我都会运行此命令来构建我的项目: ng build --prod --aot=false --build-optimizer=false 这一直很好,直到我今天犯了一个错误。我偶然在
我们有两个分支:1. HEAD - 最新版本(AKA Trunc)2. PROD——发布版本 当您修复已发布版本中的错误时,您会执行以下哪些操作: 在 PROD 中修复它,然后合并到 HEAD 中 在
我必须运行抓取任务来为我的 App Engine (Java) 应用程序收集数据。 我不确定哪个最好 - 在开发模式下抓取数据并将其上传到产品或在应用程序在生产环境中运行时抓取它。 有区别吗? 将大量
我正在为一个项目使用最新的 angular-cli (beta-18)。我知道 cli 仍处于非常早期的阶段,但我很困惑为什么我的最终包大小在没有 AoT 的情况下实际上更小。 当我运行 ng bui
我正在阅读 Numpy 文档,似乎函数 np.prod(...)、np.product(...) 和ndarray 方法 a.prod(...) 都是等价的。 在样式/可读性和性能方面是否有首选版本可
ng build --prod 和 ng build --env=prod 之间有什么区别? 我的理解是 ng build --env=prod 仅在 environment.prod.ts 中设置环
我的 Angular 项目是 @Angular4.3.3 ng build -prod 构建需要 77 秒 ng build --prod --build-optimizer=true 构建需要 19
如果这是重复的,请将其标记为重复。另外,我不确定这是否是一个基于意见的问题。我的谷歌搜索没有返回任何与我的困境相关的信息,我也不确定我应该谷歌搜索什么。 ( 1 , 2 ) 我的问题是关于如何防止在
当我尝试使用 --prod 选项运行 ng build 时,它会编译成一个 main.js 文件,并且我在控制台中没有收到任何错误。 但是当我在浏览器中运行应用程序时,它仍然会查找单独的 js 文件。
当我使用命令 npm run build -- --prod 时,我收到以下错误消息: 属性“PropertyName1”是私有(private)属性,只能在“AppComponent”类中访问 “A
Angular 生产构建不会在我的项目中生成唯一的哈希值。 以下是构建日志截图 无法在新的 angular cli 项目中重现此问题,似乎我的项目中存在一些问题。 我正在使用 Angular - 6.
我第一次尝试在生产环境中运行我的项目,但没有按预期进行。 按照此处的说明操作后 https://symfony.com/doc/current/deployment.html我的 localhost/
我想在开发构建期间排除一个模块,但对于生产构建添加它。 在 settings.gradle我有: if (!this.hasProperty("-cart-view")) { println("
我的 Symfony 3 应用程序在我的本地网络服务器上完美运行。由于它安装在远程 Web 服务器上,因此会生成空白页面,甚至路由也不起作用。编辑 web/app.php $kernel = new
如何仅为 PROD 环境设置自定义错误页面?我想显示用于生产的自定义环境,但显示普通环境,但开发环境除外。 有什么想法吗? 最佳答案 我遇到了同样的问题,解决方案非常简单。您必须修改参数twig.ex
我的 Symfony 3 应用程序在我的本地网络服务器上完美运行。由于它安装在远程 Web 服务器上,因此会生成空白页面,甚至路由也不起作用。编辑 web/app.php $kernel = new
是 fullcalendar 用于插入日历并发挥其魔力的 html 标签。这是一个很棒的工具,但是发生了一些奇怪的事情。 我的日历是根据数据库中的事件创建的,所有这些东西都运行良好。问题是这样的..
我有 4 个 yaml 文件 部署.yaml 服务.yaml 入口.yaml issuer.yaml 我想将letsencrypt-prod 用于我的认证服务。但它不起作用。 当我用来确定入口正在工作
我是一名优秀的程序员,十分优秀!