Exemplo de código e configuração necessários para um modelo CRUD simples do Magento 2?

8

Como posso, um programador de usuário final, criar um novo modelo "CRUD" no Magento 2? Ou seja, quero criar os arquivos de classe PHP e arquivos de configuração XML que

  1. Deixe-me criar, ler, atualizar e excluir dados de uma tabela de banco de dados
  2. Deixe-me criar as tabelas iniciais do banco de dados que armazenam essas informações.

No Magento 1, isso foi tratado por um modelo, um modelo de recursos, um modelo de recursos de instalação e vários nós config.xml. Não está 100% claro como isso é tratado no Magento 2.

Já existe um módulo de amostra ou um tutorial claro para isso? Ou trabalhar de trás para frente a partir de um modelo principal existente (como na página CMS) é nossa única opção?

Alan Storm
fonte

Respostas:

4

Rastreado este sozinho.

Primeiro, o Magento 2 não requer XML adicional para criar um modelo CRUD. O Magento 2 sabe automaticamente como criar o modelo de recursos e objetos de coleção necessários com base em uma convenção de nomenclatura.

Magento 2 faz exigem um

  • Classe de modelo
  • Classe de Modelo de Recurso
  • Classe do Modelo de Coleção
  • Uma classe de instalação do esquema

As especificidades de cada uma delas estão além do escopo de uma única resposta do Stack Exchange, mas o modelo CMS Page oferece um exemplo simples de cada classe.

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/Page.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/ResourceModel/Page.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/ResourceModel/Page/Collection.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Setup/InstallSchema.php

Além disso, meu pilão da ferramenta de geração de código Magento 2 agora possui um comando generate_crud_model .

Alan Storm
fonte
3

Para criar tabelas iniciais do banco de dados, você precisa criar um arquivo InstallSchema.php na pasta Setup da sua extensão. Isso precisa implementar o InstallSchemaInterface.

Você fez check-out desta extensão: https://github.com/tzyganu/Magento2SampleModule ? Isso me ajudou a entender muito sobre o Magento 2 CRUD. Eu acho que é compatível com Magento 2.0.0, mas não tenho certeza. Você também pode encontrar um exemplo do InstallSchema lá.

Silvan
fonte
O Magento atualizou recentemente nossos próprios módulos de amostra , que você também pode conferir.
Steve Johnson
@SteveJohnson Existe um exemplo de modelo CRUD nesse link? Eu não vejo isso.
Alan Storm
Disseram-me que existe um módulo que está aguardando para ser mesclado, mas não sei os detalhes exatos. É o PR # 2 no GitHub interno.
Steve Johnson
2

Meu caminho segue os passos das etapas
1 - Registrando um módulo (registration.php e module.xml)
2 - Criando um arquivo de configuração do sistema (system.xml)
3 - Criando um arquivo de configuração (config.xml)
4 - Criando listas de controle de acesso ( acl.xml)
5- Criando um script de instalação (InstallSchema.php)
6- Gerenciando a persistência da entidade (modelo, recurso, coleção)
7- Construindo uma interface de front-end
8- Construindo uma interface de back-end

A partir do passo 5, acho que fica muito tempo lá. Exemplo que você pode ver em amostras do magento principal. Depende do que você precisa arquivamento
Mesa plana simples? Veja no módulo como cms. Este módulo é mais claro para entender as
tabelas EAV? Veja no catálogo de módulos, cliente, vendas, impostos ..

mrtuvn
fonte
2

Para Magento 2. Estou usando abaixo do gerador CRUD

https://mage2gen.com/

Ankit Shah
fonte