2015-12-03 8 views
12

Ho questo codiceSymfony 3, DI - Aggiungi servizio per argomento

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" } 

Questo ha funzionato bene in < = 2.8, ma qui a 3.0 ho ricevuto questo messaggio di errore

[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]").

Ther e nient'altro nel mio file /ext/thing/app/config/services.yml

+0

E 'stato deprecato in 2.8 e rimosso in 3.0 (https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Yaml/Inline.php# L239-L245). Basta citare il tuo servizio come 'argomenti: ['@ repo.game']' e dovrebbe passare. – qooplmao

+2

E per la situazione 'double/single quotes' ..." usando le virgolette singole è più facile delle virgolette IMO: le virgolette in Yaml richiedono di sfuggire a molti caratteri nella stringa, mentre le virgolette singole devono solo sfuggire alle virgolette stesse (mediante raddoppiandoli) "(citato da https://github.com/symfony/symfony-demo/issues/246#issuecomment-157686459) – qooplmao

+1

Una volta superato il problema @, probabilmente riceverai un errore su factory_service. Dovresti usare factory, http://symfony.com/doc/current/components/dependency_injection/factories.html – Cerad

risposta

17

Facendo riferimento alla Guida all'aggiornamento del yaml section:

Avvio di una stringa non quotate con @, `, | o> porta ad un ParseException.

Quindi, cercare di modificare la configurazione come segue:

file.upload.listener: 
    class: AppBundle\Listener\FileUploadListener 
    arguments: ["@repo.game"] 
    tags: 
     - { name: "kernel.event_listener", event: "oneup_uploader.post_upload", method: "onUpload" } 

Spero che questo aiuto

+0

Grazie, sono carina certo che non ho avuto alcun errore di deprecazione in 2.8, e questo è il motivo per cui ho "pensato" che ero sicuro di aggiornare. – Martin

+0

Ho passato un'ora a fissare la mia configurazione. Grazie! Ora leggendo il resto della guida di aggiornamento ... :) – Joe

1

Primo errore simile al rientro, hai 2 rientri di spazio e 4 rientro in argomento e tag, prova il test di yml online.

Second symfony 3 è rigido ora. è necessario aggiungere la quota in servizio argomento [@repo.game]-["@repo.game"]

0

Per ora il valore con i caratteri speciali devono essere avvolti con apici invece di doppio. È valido yaml ma ad es. genera molte eccezioni in phpunit per symfony

Problemi correlati