Je développe une application Symfony 3. Le journal du profileur Symfony me dit :
依赖于服务自动注册类型"AppEntitySubDirCategory"已自3.4版本起被弃用,并且在4.0版本中将不再支持。 请创建一个名为"AppEntitySubDirCategory"的服务。
Cependant, il ne s'agit que d'un simple bean ORM :
/** * @ORMEntity * @ORMTable(name="category") */ class Category { ...
Comment dois-je résoudre ce problème ? Dois-je vraiment déclarer l'entité ORM en tant que service dans services.yaml
? Si oui, que faut-il faire ?
MISE À JOUR En fait, mes entités sont dans un sous-répertoire. J'ai modifié ma question.
Dans mon service.yaml
j'ai essayé :
App: resource: '../src/*' exclude: '../src/{Entity,Repository,Tests,Entity/SubDir}'
...Mais cela n'a aucun effet.
Avez-vous une classe sous Service-auto Registration qui utilise des entités comme paramètres de constructeur ?
C'est là que réside votre problème.
Vous devez vous demander si cette classe associée est vraiment un service ou simplement un simple objet dont vous créez toujours des instances vous-même.
S'il n'est pas utilisé comme service via un conteneur, vous avez deux options :
Vous pouvez exclure cette classe via un modèle global comme le suivant :
Ou vous pouvez définir les paramètres suivants dans votre configuration :
Avec cette option, le conteneur n'essaiera pas de créer une classe de service avec des paramètres qui ne sont pas disponibles en tant que service, et vous obtiendrez une erreur décisive. Il s'agit du paramètre par défaut pour SF4.
Un bon exemple qui déclenche cette erreur est une classe d'événements personnalisée qui prend une entité comme charge utile dans le constructeur :
Maintenant, si ce fichier n'est pas spécifiquement exclu, le conteneur tentera de l'enregistrer automatiquement en tant que service. Le corps solide étant exclu, il ne peut pas être câblé automatiquement. Mais dans la version 3.4, il existe ce mécanisme de repli qui déclenche cet avertissement. Une fois strict_mode activé, l'événement n'est pas disponible en tant que service et générera une erreur si vous essayez de l'utiliser en tant que service.