Sei que há muitos tópicos sobre esta questão, mas não tenho certeza de entender claramente.
Quando é que precisamos usar o contrato de serviço?
- Eles estão substituindo o CRUD feito por
Model
/ResourceModel
? - Precisamos criar sempre que houver um contrato de serviço para cada entidade que usará uma tabela de dados no módulo personalizado?
- Eles são realmente interessantes para desenvolvimento futuro?
- Por que o Magento às vezes usa
save
/load
do modelo no Controller / Block, e às vezes não?
Obrigado
magento2
custom
service-contract
crud
TaKe_Da_ShAkEr
fonte
fonte
Respostas:
Basicamente, os contratos de serviço são um conjunto de interfaces disponíveis para os módulos declararem APIs padrão. Em termos gerais, existem duas categorias de API, a API de dados que expõe métodos CRUD e a API operacional que realmente faz alguma coisa.
Os contratos de serviço cumprem várias funções importantes, como:
Agora, com o uso de interfaces e APIs, fica muito mais claro como interagir com os módulos no sistema mais modular do Magento, pois eles se comunicam apenas via API.
Todas as classes são documentadas por meio de suas interfaces, para que você saiba exatamente o que cada um faz e como usá-lo afetará toda a sua implementação.
Eu recomendo que você faça os Fundamentos do curso Magento de desenvolvimento magento, que o Magento fornece gratuitamente até 31/1/2017. Abrange exaustivamente a visão geral do Contrato de Serviço e se transforma em API Framework, API de Dados e API da Web
fonte
Os contratos de serviço são muito úteis no Magento2. Eles definem exatamente quais campos de dados você precisa para uma entrada. Como o Magento é desenvolvido de forma que controladores, processos e APIs da Web consomem os mesmos repositórios e modelos, o contrato de serviço ajuda a tornar os dados os mesmos em todos eles. Também é útil porque oferece a oportunidade de injetar fábricas e outras coisas facilmente.
fonte