Symfony 4:忽略来自调试工具栏的内核事件

2023-12-01

我对 Symfony 还很陌生,所以如果这对你来说很明显,请原谅我:)

对于我的项目,我需要根据 url 执行一些操作。我使用内核事件,更具体地说是内核请求来执行此操作。

在 services.yaml 中:

App\Service\UrlManager:
    tags:
        - { name: kernel.event_listener, event: kernel.request}  

在 UrlManager.php 中:

public function onKernelRequest(GetResponseEvent $event)
{
    $request = Request::createFromGlobals();
    $hostname = parse_url($request->server->get('HTTP_HOST'),PHP_URL_HOST);

    /*
     * here my treatment that works fine :)
     */ 

但当我处于 DEV 模式时,调试工具栏会再次触发相同的事件...... 我发现的唯一解决方法是在治疗之前添加此内容:

if (substr($request->server->get('REQUEST_URI'),0,6) != '/_wdt/') {

也可以正常工作,但我认为这不是最好的做法,因为一些非常具体的内容将保留在项目中,并且仅适用于 DEV 模式。 有没有办法“告诉”工具栏不要触发此事件?也许需要在 services.yaml 中添加一些内容?或者其他一些配置参数?


所以我做了更多的研究。这并不是说内核事件被触发了两次,而是一旦您的原始页面被发送到浏览器,一些 JavaScript 就会发起第二个 _wdt 请求以获取附加信息。所以你实际上有两个独立的请求。您可以通过在浏览器中按 F12,然后选择网络选项卡并刷新来看到这一点。

过滤调试请求很容易,因为路由的名称始终是 _wdt。您还可以直接从请求中获取主机。仍然想检查主请求,因为最终您的代码可能会触发子请求。

public function onRequest(GetResponseEvent $event)
{
    // Only master
    if (!$event->isMasterRequest()) {
        return;
    }
    $request = $event->getRequest();

    // Ignore toolbar
    if ($request->attributes->get('_route') === '_wdt') {
        return;
    }

    // Avoid parsing urls and other stuff, the request object should have
    // all the info you need
    $host = $request->getHost();

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony 4:忽略来自调试工具栏的内核事件 的相关文章

随机推荐

  • 强制 Sympy 在 MathJax Jupyter 中打印数学

    我正在使用 VSCode 和 Jupyter 来处理 Sympy 通常 它以 MathJax 格式打印数学方程 sympy 文档说 在IPython笔记本中 它将使用MathJax来渲染LATEX MathJax 输出 但是 当我安装 ma
  • 捕获 Mysqli 错误

    我定义了一个自定义错误处理程序 它捕获所有异常并将它们保存到日志中 现在 如果我在 mysqli 查询中出现语法错误 例如拼写错误 页面将在此时完全停止加载 不会引发异常 因此不会触发错误处理程序并且不会记录任何内容 这是正常的吗 我应该检
  • 如何渐变填充按钮的背景?

    我必须创建一个带有渐变填充的彩色按钮 从按钮的中间沿 Y 轴开始 如果我将按钮的背景属性设置为我想要的颜色 我会丢失rounded按钮的外观和感觉以及渐变填充 它看起来像TextView有背景 另外 我希望当用户按下按钮时改变这种颜色 我可
  • 在 jquery ajax 中使用动态数据实现自动完成

    我在 ASP Net MVC 应用程序中使用 Materialize ui 并且使用带有动态数据的自动完成控件 这是我的代码 div class row div class col s12 div class row div class i
  • 节点 module.exports 返回未定义

    我在使用 Node js 时遇到问题module exports 我明白那个module exports是返回一个对象的调用 该对象具有为其分配的任何属性 如果我有这样的文件结构 formatting js function Format
  • 锁助手的线程安全使用(关于内存屏障)

    我所说的锁定助手指的是一次性对象 可以通过它来实现锁定using声明 例如 考虑一个典型的用法SyncLock班级来自乔恩 斯基特的 MiscUtil public class Example private readonly SyncLo
  • 替换python中的特殊字符

    我有一些来自网络的文字 6 49 显然我希望它显示为 6 49 到目前为止我已经尝试过以下操作 s url title s s encode utf8 s s replace u 还有一些变体 在同一个论坛上找到它之后 但仍然没有运气 因为
  • 理解Python的枚举

    在转向 python 之前 我开始自学一些 c 并且习惯于编写循环 例如 for int i 0 i lt 20 i cout lt lt value of i lt lt i lt lt endl 转向 python 我经常发现自己使用类
  • Infinispan - 设置每个实体的expiration.lifespan

    我在 Jboss 6 1 0 上部署了一个 java Web 应用程序 它使用 infinispan 5 2 6 Final 我正在尝试设置每个实体特定的有效期遵循本指南 http infinispan org docs 5 2 x use
  • 为 .NET 项目选择数据库和 ORM

    我正在开发一个在客户端使用 Silverlight 的 NET 应用程序 现在我已经到了我想扔掉服务器端的静态虚拟数据并添加数据库的地步 对于数据库 我喜欢使用 ORM 之一 我可以在其中简单地标记我的模型类 并且数据库表是为我构建的 我之
  • 将 JavaScript 函数作为参数传递

    如何将函数作为参数传递 而无需在 父 函数中执行该函数或使用eval 因为我读到它是不安全的 我有这个 addContact entityId refreshContactList 它有效 但问题是refreshContactList当调用
  • 如何将修改/包装的 HTTPServletRequest 传递给后续的 Zuul Filter?

    我们有一个 Zuul 预过滤器 Filter1 它将检查传入的 HTTPServletRequest 并对其中的查询参数进行一些更改 以将其嵌入到自定义创建的请求中 包装 HttpServletRequestWrapper 现在 我想将这个
  • 如何通过Retrofit和GsonConverter处理JSONP响应?

    我需要解析来自 Flickr API 的响应 它以 json Flickr Feed jQuery 回调函数返回响应 这不是有效的 JSON 响应 我知道我们可以使用以下方法删除 Flickr API 的 JSON 回调方法nojsonca
  • 将窗口放置在 WPF 控件的左上角

    我试图以某种方式放置一个窗口 使其左上角位于特定 WPF 控件左上角的同一点 所以我尝试像这样获取控件的屏幕坐标 PresentationSource source PresentationSource FromVisual ctrl Po
  • 在 PHP 中获取本地计算机 IP 地址 [重复]

    这个问题在这里已经有答案了 我希望获取特定程序必须运行的本地计算机 IP 地址 要运行该页面 我首先检查本地 IP 地址是否与指定的 IP 地址匹配 然后才会打开该页面 我正在用 PHP 编程 我尝试过 SERVER 和 getenv 但它
  • 从 size_t 中减去会得到大的正数[重复]

    这个问题在这里已经有答案了 我刚刚遇到了一个令人讨厌的错误 其中有一个循环 for auto i 0 i lt vec size 1 i vec 是emtpy std vector 因此 vec size 1 计算结果为2 64在我的系统上
  • 无法在 SQL Server 2008 上绑定多部分标识符

    我有2张桌子 requests ID company id amount companies ID name 具有 FK 约束 requests company id gt companies id requests company can
  • iOS WiFi 通知 API

    有没有办法在 iOS 上以编程方式订阅 WiFi 通知 例如 假设用户没有禁用 WiFi 通知 当用户处于 WiFi 网络范围内时 操作系统会提供可用网络的通知 应用程序可以订阅此通知并向用户提供自己的通知吗 应用程序甚至可以检查 SSID
  • 如何解读ARM的SMC调用?

    我一直在阅读 Android 内核 了解 CPU 内核 又名 DVFS DCVS 的动态电源管理是如何完成的 我找到的代码here对以下函数进行一些调用 定义here 进而调用 SMC 汇编指令 ARM有一个文档解释了SMC调用约定 但我无
  • Symfony 4:忽略来自调试工具栏的内核事件

    我对 Symfony 还很陌生 所以如果这对你来说很明显 请原谅我 对于我的项目 我需要根据 url 执行一些操作 我使用内核事件 更具体地说是内核请求来执行此操作 在 services yaml 中 App Service UrlMana