Atualmente estou construindo meu próprio pacote Symfony (estou usando a versão 3.3). Funciona bem até agora, mas agora eu queria mover a definição de serviço específica do pacote para fora do meu app/config/services.yml
para uma definição de serviço dentro do pacote.
Eu criei um src/MyBundle/Resources/config/services.yml
e seguiu o guia Como carregar a configuração do serviço dentro de um pacote para carregá-lo. Isso funciona muito bem, mas eu pensei que os caminhos dentro do recém-criado services.yml
parece um pouco feio:
MyBundle:
resource: "../../*"
exclude: "../../{Tests}"
Então eu pensei que seria um pouco mais limpo, se eu usar o @Bundle
-notação em vez disso:
MyBundle:
resource: "@MyBundle/*"
exclude: "@MyBundle/{Tests}"
No entanto, do que eu estava enfrentando o erro:
FileLocatorFileNotFoundException
O arquivo "@MyBundle" não existe (em:
<...>MyBundleDependencyInjection/../Resources/config
), Onde<...>
corresponde a um caminho absoluto.
Eu também testei se era um problema de nomeação do nome do pacote, mas quando eu tenho uma referência de bundle nomeada incorretamente no app/config/services.yml
, por exemplo. @SomeBundleThatDoesNotExist
então eu recebo um erro diferente:
FileLoaderLoadException
O pacote "SomeBundleThatDoesNotExist" não existe ou não está ativado.
Então, minha pergunta é: por que o @Bundle
-notação funciona bem no app/config/services.yml
mas não no src/MyBundle/Resources/config/services.yml
?
Respostas:
0 para resposta № 1Se você usar o serviço, lembre-se de torná-lo público para uso externo:
autowire: true
public: true
Mas, se o seu symfony não sabe onde está o pacote, por favor chec esta resposta:
O Pacote Gerado pelo Symfony não funciona