Tudo o que você precisa fazer é solicitar a fábrica do modelo desejado no construtor. Ele será gerado automaticamente quando você executar o Magento ou o compilador.
obteve o erro - não Classe Magento \ Framework \ ObjectManager não existe
Anas Mansuri
5
Tecnicamente, se você tiver uma instância do \Magento\Framework\ObjectManagerque você pode chamar createde gete isso vai dar-lhe o objeto que você deseja. Mas isso realmente depende de onde você deseja usar isso, pois o Magento 2 muda para injeção de dependência via construtor .
Respostas:
O Magento desencoraja estritamente o uso do ObjectManager diretamente. Ele fornece classes de serviço que o abstraem para todos os cenários.
Para todos os não injetáveis (modelos), é necessário usar a fábrica:
Tudo o que você precisa fazer é solicitar a fábrica do modelo desejado no construtor. Ele será gerado automaticamente quando você executar o Magento ou o compilador.
fonte
Você pode fazer assim:
mas você precisa garantir que o
_objectManager
membro exista.Na maioria das classes, deveria, mas se não injetar no construtor. Como isso:
[editar um ano depois]
Mesmo que a resposta acima funcione, não é a melhor prática. Para o caminho certo, veja a resposta de Anton.
fonte
Tecnicamente, se você tiver uma instância do
\Magento\Framework\ObjectManager
que você pode chamarcreate
deget
e isso vai dar-lhe o objeto que você deseja. Mas isso realmente depende de onde você deseja usar isso, pois o Magento 2 muda para injeção de dependência via construtor .fonte