基于控制台命令参数的服务参数


Service argument based on console command argument

我有几个实体管理器,如

  entity_manager_en
  entity_manager_us
  entity_manager_pl

等。

每个实体管理器引用不同语言内容的数据库。

我有一个命令,其中需要的参数是lang(语言)。我也有服务,作为构造函数参数需要实体管理器。

是否有可能以某种方式创建基于命令中给定的lang的动态实体管理器,并将其作为我的服务参数传递,而它正在创建?

我尝试使用ConsoleCommandEvent,但它在输入包含参数之前触发…

如果您想在命令中调用execute方法中的实体管理器,您可以获得参数并将其添加到getManager()方法中:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $lang = $input->getArgument('lang');
    $em = $this->getContainer()->get('doctrine')->getManager('entity_manager_' . $lang);
    ...
}