我有这段代码
services:
repo.game:
class: Doctrine\ORM\EntityRepository
factory_service: doctrine.orm.default_entity_manager
factory_method: getRepository
arguments:
- AppBundle\Entity\Game
file.upload.listener:
class: AppBundle\Listener\FileUploadListener
arguments: [@repo.game]
tags:
- { name: "kernel.event_listener", event: "oneup_uploader.post_upload", method: "onUpload" }
这在< = 2.8中运行良好,但在3.0中我得到了此错误消息
[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException] The file "/ext/thing/app/config/services.yml" does not contain valid YAML.
[Symfony\Component\Yaml\Exception\ParseException]
The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar at line 14 (near "arguments: [@repo.game]").
我的/ext/thing/app/config/services.yml
档案中没有其他内容
答案 0 :(得分:17)
参考yaml section中的升级指南:
使用@,`,|或>启动不带引号的字符串导致一个 ParseException的。
因此,请尝试修改您的配置,如下所示:
file.upload.listener:
class: AppBundle\Listener\FileUploadListener
arguments: ["@repo.game"]
tags:
- { name: "kernel.event_listener", event: "oneup_uploader.post_upload", method: "onUpload" }
希望这个帮助
答案 1 :(得分:1)
第一个错误看起来像缩进,你在参数和标签中有2个缩进空格和4个缩进,请在线尝试测试yml。
第二个symfony 3现在很严格。您需要在参数服务[@repo.game]
中添加引用到["@repo.game"]
答案 2 :(得分:0)
现在,带有特殊字符的值必须用单引号而不是双引号括起来。它是有效的yaml但是例如它在phpunit run for symfony
中抛出了许多异常