有关工作流注册表的symfony 6.4 docs状态:

请注意,将注册表注入您的服务并不是 推荐的.

但是,我需要在一个服务方法中获取一个特定的工作流,该服务方法根据一个键来决定使用哪个工作流.我事先不知道要加载哪个工作流,因此无法注入特定的工作流.我怎么能这样做呢?目前,我注入注册表.我可以以某种方式注入服务容器并稍后从那里获取它吗?

推荐答案

您可以使用服务定位器访问每个工作流.

它在documentation中提到:

如果要检索所有工作流,例如出于文档目的,您可以使用以下标记注入所有服务:

workflow: all workflows and all state machine;
workflow.workflow: all workflows;
workflow.state_machine: all state machines.

使用symfony 6/7可以使用Locator属性轻松完成此操作:

public function __construct(
    #[TaggedLocator('workflow')] private ContainerInterface $workflowsAndStateMachinesLocator,
    #[TaggedLocator('workflow.workflow')] private ContainerInterface $workflowsLocator,
    #[TaggedLocator('workflow.state_machine')] private ContainerInterface $stateMachinesLocator,
) {
}

Php相关问答推荐

Msgraph-sdk-php v2如何从返回对象中获取数据?

Symfony Api平台:按自定义实体方式排序结果

获取并判断WooCommerce用户订阅结束日期

当主页和帖子的缩略图相同时,如何减少主页和帖子的缩略图

将客户重定向到自定义感谢页后的空白页

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

模式 bootstrap 未显示

对表示大小的值后缀进行自定义排序(XXS、XS、S、M、L、XL、XXL)

将可编辑的计费自定义字段添加到 WooCommerce 管理单个订单

.htaccess 重写规则问题

如何在 Phpunit 的静态提供程序中创建测试双打?

Laravel 10 - 使用缓存对 ThrottleRequest 进行限制

yii2 sql迁移覆盖新更改的记录

显示时间范围内的可用空位,同时考虑已预订的空位

MySQLI bind_param导致的Cannot modify readonly property错误

我怎样才能在 .htaccess 中有 2 个参数?

如何从此字符串创建 Carbon 对象:2022-06-21T05:52:46.648533678Z?

为什么在解压缩具有混合字符串和 int 键的关联数组时出现错误消息无法使用位置参数...?

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

如何在光速网络服务器中使用 apache ..htaccess