为什么我总是得到这个信息;您不能转储带有参数的容器";在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>