Tout ce que vous avez à faire est de demander l'usine du modèle souhaité dans le constructeur. Il sera généré automatiquement lorsque vous exécutez Magento ou le compilateur.
[modifier un an plus tard]
Même si la réponse ci-dessus fonctionne, ce n'est pas la meilleure pratique. Pour la bonne façon de procéder, voir la réponse d'Anton.
a obtenu une erreur - La classe Magento \ Framework \ ObjectManager n'existe pas
Anas Mansuri
5
Techniquement , si vous avez une instance de \Magento\Framework\ObjectManagervous pouvez appeler createde getet cela vous donnera l'objet que vous désirez. Mais cela dépend vraiment de l'endroit où vous souhaitez l'utiliser car Magento 2 se déplace vers l' injection de dépendance via le constructeur .
Réponses:
Magento décourage strictement l'utilisation directe d'ObjectManager. Il fournit des classes de service qui l'abstiennent pour tous les scénarios.
Pour tous les non-injectables (modèles), vous devez utiliser l'usine:
Tout ce que vous avez à faire est de demander l'usine du modèle souhaité dans le constructeur. Il sera généré automatiquement lorsque vous exécutez Magento ou le compilateur.
la source
Vous pouvez le faire comme ceci:
mais vous devez vous assurer que le
_objectManager
membre existe.Dans la plupart des classes, il le devrait, mais s'il ne l'injecte pas dans le constructeur. Comme ça:
[modifier un an plus tard]
Même si la réponse ci-dessus fonctionne, ce n'est pas la meilleure pratique. Pour la bonne façon de procéder, voir la réponse d'Anton.
la source
Techniquement , si vous avez une instance de
\Magento\Framework\ObjectManager
vous pouvez appelercreate
deget
et cela vous donnera l'objet que vous désirez. Mais cela dépend vraiment de l'endroit où vous souhaitez l'utiliser car Magento 2 se déplace vers l' injection de dépendance via le constructeur .la source