Vejo que no ramo de desenvolvimento do repositório Magento 2 os métodos load
e save
da Magento\Framework\Model\AbstractModel
classe são obsoletos.
Mas há um zilhão de classes no núcleo que estendem essa classe e usam save
e load
.
Ao criar meu próprio módulo para a parte CRUD de minhas entidades, sigo as mesmas diretrizes de um módulo principal.
Mas, como esses métodos estão obsoletos, prefiro estar preparado para o futuro.
O que devo usar em vez deles? Ou devo estender outra coisa?
57
Respostas:
Você deve usar o Contrato de serviço do módulo.
Por exemplo, para o produto, você deve usar ProductRepositoryInterface
Se o Contrato de Serviço do Módulo não estiver disponível, você poderá usar o ResourceModel para salvar entidades.
fonte
ProductRepositoryInterface
ainda usaload
nos métodosget
egetById
. Devo usar o modelo de recursos para o meu módulo em vez desteload
método?Pelo que entendi, o que vai acontecer é que o Magento vai mudar para hidratadores
extract()
ehydrate()
métodos.Este link costumava funcionar, mas parece que a equipe do Magento o retrocedeu: https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/Model/Entity/EntityHydrator.php
Você pode encontrar o histórico do commit aqui: https://github.com/magento/magento2/tree/09132da06e18dde0f90aabfc962db2bc19b64f3c/lib/internal/Magento/Framework/Model/Entity
Os arquivos importantes são:
EntityHydrator.php
EntityMetadata.php
HydratorInterface.php
MetadataPool.php
Eu também sugiro que você verifique os arquivos na
Action
pasta, bem como osSequence
arquivos.Pelo que entendi (posso estar totalmente errado aqui):
Action
pasta são ações CRUDSequence
arquivos são iteradores?Essa foi uma conversa que aconteceu há um tempo atrás (foi Alan Storm quem a mencionou? Não me lembro), então não tenho certeza se a equipe do Magento ainda está indo nessa direção.
Atualizar
De minha pesquisa, o ticket interno do Magento referente a essa alteração é MAGETWO-50676, e aqui estão os commits relacionados que consegui encontrar:
Provavelmente há mais TBH, mas não sinto vontade de navegar no repositório inteiro para obter mensagens de confirmação ^^
Se você não conhece os hidratantes, sugiro que verifique este link: http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
Atualização da 2.1
Magento agora está usando a
EntityManager
classe para substituir a herança, você pode encontrar mais informações aqui: Magento 2.1: usando o gerenciador de entidadesfonte
load()/save()
hidratantes. PresumoSequences
trabalho como iteradores eActions
são ações CRUDVeja a descrição no código da classe https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Model/AbstractModel.php#L626
fonte
load
save
edelete
vai desaparecer?Uma alternativa ao método de carregamento reprovado do Magento 2 é o método de carregamento do modelo de recurso.
aqui o primeiro parâmetro é o objeto de modelo e o segundo parâmetro é o ID que você deseja carregar.
Uma alternativa ao método de economia obsoleta do Magento 2 é o método de economia do modelo de recurso.
O método save aceita apenas um parâmetro que é seu objeto de modelo.
fonte