У меня есть этот код
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
ничего больше /ext/thing/app/config/services.yml
Ссылаясь на руководство UPGRADE в разделе yaml :
Запуск строки без кавычек с помощью @, `, \ или> приводит к исключению ParseException.
Поэтому попробуйте изменить конфигурацию следующим образом:
file.upload.listener: class: AppBundle\Listener\FileUploadListener arguments: ["@repo.game"] tags: - { name: "kernel.event_listener", event: "oneup_uploader.post_upload", method: "onUpload" }
Надеюсь, что эта помощь
Первая ошибка выглядит как отступ, у вас есть 2 отступов и 4 отступа в аргументе и тегах, попробуйте проверить yml онлайн.
Второй symfony 3 теперь строг. вам нужно добавить цитату в службу аргументов [@repo.game]
в ["@repo.game"]
На данный момент значение со специальными символами должно быть обернуто одинарными кавычками, а не двойными. Он действителен yaml, но, например, он бросает множество исключений в phpunit для symfony