Ejemplo de código y configuración necesarios para un modelo simple Magento 2 CRUD?

8

¿Cómo puedo, un programador de usuario final, crear un nuevo modelo "CRUD" en Magento 2? Es decir, quiero crear los archivos de clase PHP y los archivos de configuración XML que

  1. Permítame crear, leer, actualizar y eliminar datos de una tabla de base de datos
  2. Permítame crear la (s) tabla (s) inicial (es) de la base de datos que almacenarán esta información.

En Magento 1 esto fue manejado por un modelo, modelo de recurso, modelo de recurso de configuración y varios nodos en config.xml. No está 100% claro cómo se maneja esto en Magento 2.

¿Existe algún módulo de muestra o tutorial claro para esto? ¿O nuestra única opción es trabajar hacia atrás desde un modelo central existente (como la página CMS)?

Alan Storm
fuente

Respuestas:

4

Rastreé este por mi cuenta.

Primero, Magento 2 no requiere XML adicional para crear un modelo CRUD. Magento 2 sabe automáticamente cómo crear el modelo de recurso y los objetos de colección necesarios según una convención de nomenclatura.

Magento 2 hace requerir una

  • Clase de modelo
  • Clase de modelo de recurso
  • Colección Modelo Clase
  • Una clase de instalación de esquema

Los detalles de cada uno de estos están más allá del alcance de una sola respuesta de Stack Exchange, pero el modelo de página de CMS ofrece un ejemplo simple de cada clase.

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

Además, mi maja de herramienta de generación de código Magento 2 ahora tiene un comando generate_crud_model .

Alan Storm
fuente
3

Para crear tablas de base de datos iniciales, debe crear un archivo InstallSchema.php en la carpeta de configuración de su extensión. Esto necesita implementar InstallSchemaInterface.

¿Compró esta extensión: https://github.com/tzyganu/Magento2SampleModule ? Me ayudó a entender mucho sobre Magento 2 CRUD. Creo que es compatible con Magento 2.0.0, pero no estoy seguro. También puede encontrar un ejemplo de InstallSchema allí.

Selvático
fuente
Magento actualizó recientemente nuestros propios módulos de muestra , que también puede consultar.
Steve Johnson el
@SteveJohnson ¿Hay un ejemplo de modelo CRUD en ese enlace? No lo veo
Alan Storm
Me dijeron que hay un módulo que está esperando para fusionarse, pero no sé los detalles exactos. Es PR # 2 en el GitHub interno.
Steve Johnson
2

A mi manera, siga los pasos a seguir
1- Registro de un módulo (Registration.php y module.xml)
2- Creación de un archivo de configuración del sistema (system.xml)
3- Creación de un archivo de configuración (config.xml)
4- Creación de listas de control de acceso ( acl.xml)
5- Crear un script de instalación (InstallSchema.php)
6- Administrar la persistencia de la entidad (modelo, recurso, colección)
7- Crear una interfaz de interfaz
8- Crear una interfaz de programa de fondo

Desde el paso 5, creo que es bastante tiempo allí. Ejemplo que puede ver en muestras de core magento. Depende de lo que necesite archivado
¿Mesa plana simple? Ver en módulo como cms. ¿Este módulo es más claro para entender las
tablas EAV? Ver en catálogo de módulos, cliente, ventas, impuestos ..

mrtuvn
fuente