问题标签 [symfony-eventdispatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1684 浏览

php - 使用 Symfony 控制台 (CTRL+C) 捕获终端终止/退出

我已经构建了一个命令来触发通过 Internet 下载文件,但是由于这些文件需要由另一个组件处理,我们需要确保每个已下载且在过去 10 秒内未修改的文件是正确的视频并且没有损坏/部分下载。

出于这个原因,我们需要找到一种方法来捕获 CTRL+C 或命令终止并清理任何尚未成功下载的适用文件。

到目前为止,这是我尝试使用symfony/consoleand的方法symfony/event-dispatcher

但是var_dump(),如果我执行 CTRL+C,则永远不会在控制台中显示。

建议?

0 投票
2 回答
181 浏览

symfony - Symfony GenericEvent 中的 $subject 是什么?

包的提供GenericEventsymfony/event-dispatcher两个属性 -subjectarguments. 如果我正确理解文档arguments则可用于将上下文数据传递到Event对象中。但我没有得到,如何使用其他属性。

GenericEvent#subject打算如何使用?

0 投票
1 回答
1370 浏览

symfony - 如何在 Symfony 4 中注册事件监听器?

我正在编写一个 Symfony 应用程序。含义:应用程序具有 Symfony 应用程序的结构并使用 Symfony 的M VC(symfony/http-kernelsymfony/routing),但应尽可能独立于框架。因此,我使用的是PHP-DI 而不是框架的 DI

现在我已经添加了symfony/event-dispatcher组件并为所有自定义事件注册了一个监听器。

services.yaml

在我的system.event_handlerPHP-DI 依赖文件中定义:

现在我收到一个错误:

运行时异常

“system.event_handler”的定义没有类。如果您打算在运行时动态注入此服务,请将其标记为 synthet=true。如果这是一个仅由子定义使用的抽象定义,请添加abstract=true,否则指定一个类以消除此错误。

为什么?以这种速度使用别名是错误的吗?

好的,我已经用services.yaml我的事件处理程序的 FQCN 替换了别名:

没有错误了。但是事件处理程序仍然没有被添加到EventDispatcher.

如何在 Symfony 4 中注册事件监听器(在 PHP-DI 容器中定义)?

0 投票
0 回答
283 浏览

symfony - 如何在 Symfony 的 services.yaml 中使用 PHP-DI 中定义的服务?

我正在编写一个应用程序,它具有 Symfony 应用程序的结构和一些 Symfony 功能,但应尽可能与框架分离。因此,我使用的是PHP-DI 而不是框架的 DI

现在我需要 Symfony EventDispatcher(我的框架解耦架构的苦药,但无论如何......)。我的问题是,我没有从services.yamlPHP-DI 容器中获得引用——而且我的听众没有开始附加到EventDispatcher.

如何在中使用 PHP-DI 容器的服务services.yaml(特别是对于EventDispatcher,如果它有任何细节)?


这是一些代码:

services.yaml(完全地)

App\Kernel(完全地)

/config/dependencies/common.php(带有依赖项的文件,相关提取)

0 投票
0 回答
127 浏览

symfony - symfony 3:如何在表单类型的 addEventSubscriber 中获取更新的数据?

Symfony 版本:3.4

我有一个根表单是布局表单,其中包含一个集合类型,名为块。内容形式属于块形式。我想使用 ajax 让用户更改选择器 1 的值,然后将表单类型 2 更改为其他表单类型。

可以在控制器中的 $request->request 中选择更新后的选定值。

但我无法获得始终是旧数据的选择器 1 的新数据。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
512 浏览

symfony - 调用 postRemove 不起作用

我的项目有问题:

Not called :

Called :

奇怪的是 postRemove 没有被调用。我确认该实体已从数据库中删除。请给出一个想法。

0 投票
1 回答
76 浏览

symfony - 我什么时候应该从 Symfony EventDispatcher 切换到 RabbitMQ(任何 *MQ 库)?

我目前正在考虑的是,在我们的平台上,用户生成的事件数量每天都在增加(通话开始、通话结束、通话记录准备好、用户被阻止等),所以什么时候应该是从 Symfony EventDispatcher 切换到更高效、更可扩展的东西?

如果我错了,请纠正我:Symfony EventDispatcher 将每个订阅者加载到服务器 RAM 中并保持它直到请求被处理?如果是,这意味着 2 个生成的事件将占用 RAM 中的 2x(所有订阅者类的总和)内存,这将导致我增加服务器 RAM,这将导致我支付更多费用,而不是使用有效的事件处理方法(libs,系统架构等)。

0 投票
1 回答
64 浏览

php - 触发事件后如何触发发布方法?

我有以下事件类定义:

我创建了一个订阅者,如下所示:

我还在以下位置定义了以下内容services.yaml

为什么当我调度这样的事件时,监听器方法publish()永远不会执行?

我怀疑问题出在kernel.event_listener但不确定如何正确地为侦听器订阅事件。

0 投票
1 回答
169 浏览

php - 如何让服务像 SwiftMailer 一样在 kernel.terminate 上工作?

我想知道如何编写仅在kernel.terminate.

例如,当我打电话时:

我知道内核将向客户端发送响应,并且仅在发送电子邮件之后。

我有很多可以调用的服务,kernel.terminate但我不知道如何编写它们以便仅在该事件中调用。

现在,我正在订阅者中编写编写代码:

但是以这种方式工作意味着我必须只处理请求和响应,并且我不想依赖响应。

我不知道是否清楚,但是notificationManager在我的代码中调用我想要的任何地方并且该经理只在kernel.terminate.

0 投票
1 回答
497 浏览

php - 如何在 Symfony 4 中将上下文传递给自定义事件订阅者?

我正在使用 Symfony 4,并且有自定义事件和订阅者,例如 CustomEvent 和 CustomEventSubscriber。有调度CustomEvent的模块,例如CustomModule。该模块在控制器(ControllerA)和命令(CommandB)中使用。

换句话说,可能有以下两种情况:

或者

CustomEventSubscriber 中的逻辑稍有不同取决于调用 CustomModule 的位置(ControllerA 或 CommandB)。

如何将该信息传递给CustomEventSubscriber?

我可以向 中添加$context属性CustomEvent并将其设置在CustomModule. 但在这种情况下,我应该将有关上下文的信息传递给CustomModule.

或者也许我可以使用一些全局设置,例如容器?

或者为每个 CustomEvent 创建两个不同的事件订阅者,禁用自动连接,并“手动”初始化并添加到 ControllerA 和 CommandB 中的调度程序?