Exemple de code et de configuration nécessaires pour un modèle CRUD simple de Magento 2?

8

Comment puis-je, un utilisateur-programmeur final, créer un nouveau modèle "CRUD" dans Magento 2? Autrement dit, je veux créer les fichiers de classe PHP et les fichiers de configuration XML qui

  1. Permettez-moi de créer, lire, mettre à jour et supprimer des données d'une table de base de données
  2. Permettez-moi de créer la ou les tables de base de données initiales qui stockeront ces informations.

Dans Magento 1, cela était géré par un modèle, un modèle de ressource, un modèle de ressource de configuration et divers nœuds dans config.xml. On ne sait pas à 100% comment cela est géré dans Magento 2.

Existe-t-il encore un exemple de module ou un didacticiel clair pour cela? Ou est-ce que travailler à l'envers à partir d'un modèle de base existant (comme la page CMS) est notre seule option?

Alan Storm
la source

Réponses:

4

J'ai retrouvé celui-ci tout seul.

Tout d'abord, Magento 2 ne nécessite aucun XML supplémentaire pour créer un modèle CRUD. Magento 2 sait automatiquement comment créer le modèle de ressource et les objets de collection nécessaires en fonction d'une convention de dénomination.

Magento 2 ne nécessitent une

  • Classe de modèle
  • Classe de modèle de ressource
  • Classe de modèle de collection
  • Une classe d'installation de schéma

Les spécificités de chacune d'entre elles dépassent le cadre d'une seule réponse Stack Exchange, mais le modèle de page CMS offre un exemple simple de chaque 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

De plus, mon pilon d'outil de génération de code Magento 2 a maintenant une commande generate_crud_model .

Alan Storm
la source
3

Pour créer des tables de base de données initiales, vous devez créer un fichier InstallSchema.php dans le dossier d'installation de votre extension. Cela doit implémenter InstallSchemaInterface.

Avez-vous extrait cette extension: https://github.com/tzyganu/Magento2SampleModule ? Cela m'a aidé à comprendre beaucoup de choses sur Magento 2 CRUD. Je pense que c'est compatible avec Magento 2.0.0, mais je ne suis pas sûr. Vous pouvez également y trouver un exemple de InstallSchema.

Sylvain
la source
Magento a récemment mis à jour nos propres exemples de modules , que vous pouvez également consulter.
Steve Johnson
@SteveJohnson Y a-t-il un exemple de modèle CRUD dans ce lien? Je ne le vois pas.
Alan Storm
On me dit qu'il y a un module qui attend d'être fusionné mais je ne connais pas les détails exacts. C'est PR # 2 sur le GitHub interne.
Steve Johnson
2

Ma façon de suivre les étapes par étapes
1- Enregistrement d'un module (registration.php et module.xml)
2- Création d'un fichier de configuration système (system.xml)
3- Création d'un fichier de configuration (config.xml)
4- Création de listes de contrôle d'accès ( acl.xml)
5- Création d'un script d'installation (InstallSchema.php)
6- Gestion de la persistance d'entité (modèle, ressource, collection)
7- Construction d'une interface frontale
8- Construction d'une interface backend

À partir de l'étape 5, je pense qu'il y a beaucoup de temps. Exemple que vous pouvez voir dans des exemples de core magento. Cela dépend de ce dont vous avez besoin archivement
Table plate simple? Voir dans le module comme cms. Ce module est le plus clair pour comprendre les
tables EAV? Voir dans le catalogue des modules, client, vente, taxe ..

mrtuvn
la source
2

Pour Magento 2. J'utilise ci-dessous le générateur CRUD

https://mage2gen.com/

Ankit Shah
la source