为什么我总是得到这个信息;您不能转储带有参数的容器";在symfony控制台中?

为什么我总是得到这个信息;您不能转储带有参数的容器";在symfony控制台中?,symfony,console,rabbitmq,Symfony,Console,Rabbitmq,在终端中,当我尝试运行我创建的命令时,出现以下错误: [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]] You cannot dump a container with parameters that contain references to other services (reference to service "old_sound_rabbit_mq.split_file_prod

在终端中,当我尝试运行我创建的命令时,出现以下错误:

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]]

You cannot dump a container with parameters that contain references to other   services (reference to service "old_sound_rabbit_mq.split_file_producer" found in "/rabbit").
这是我运行新创建的控制台命令时发生的情况:

$this->getContainer()->get('split_file')->process();
我不知道为什么它说
你不能转储
!我不会在这个项目中放弃任何东西

有什么我不知道的吗

编辑
我的服务的一部分。yml:

 <parameters>
        <parameter key="file_path">/var/www/path/file.xml</parameter>
        <parameter key="rabbit" type="service" id="old_sound_rabbit_mq.split_file_producer" />
 </parameters>

<service id="split_file" class="Acme\DemoBundle\SplitFile">
            <argument>%file_path%</argument>
            <argument>%rabbit%</argument>
</service>

参数只有一个键值。不能将服务等添加到参数

<service id="split_file" class="Acme\DemoBundle\SplitFile">
        <argument>%file_path%</argument>
        <argument type="service" id="old_sound_rabbit_mq.split_file_producer"/>
</service>

  • 我建议换成yml,因为它不太冗长
  • 如果需要,可以为old rabbit创建别名

  • 缓存时,容器被转储。你说@WouterJ是什么意思?用split_文件的服务定义更新你的问题。此外,请确认仅运行应用程序/控制台会触发相同的错误。您也可以尝试清除缓存。@Cerad,我已经更新了我的问题。请坐look@phpGeek我在回复//我没有在项目中转储任何内容。有什么我不知道的吗?//Symfony2将路由器和容器缓存在
    /app/cache
    中。为了做到这一点,容器被转储。Xml功能更强大,可以使用Xml模式进行验证。在定义symfony服务的上下文中使用它并没有什么错,xml到底有多强大“那么亚姆?在这个特定问题的背景下,解释验证的“可能性”实际上是如何帮助的,因为验证没有完成?最后,如果他试图使用yaml定义一个带有密钥的参数,那么错误消息将是关于一个不存在的参数,而不是这个转储内容。在XML上下文中编写RabbitMQ的正确方法是什么?目前我不想在其他事情上多花点时间。谢谢
    <service id="split_file" class="Acme\DemoBundle\SplitFile">
            <argument>%file_path%</argument>
            <argument type="service" id="old_sound_rabbit_mq.split_file_producer"/>
    </service>