Пример кода и конфигурации, необходимых для простой модели CRUD Magento 2?

8

Как я, программист конечного пользователя, могу создать новую модель "CRUD" в Magento 2? То есть я хочу создать файлы классов PHP и файлы конфигурации XML, которые будут

  1. Позвольте мне создавать, читать, обновлять и удалять данные из таблицы базы данных
  2. Позвольте мне создать исходные таблицы базы данных, в которых будет храниться эта информация.

В Magento 1 это обрабатывалось моделью, моделью ресурсов, установочной моделью ресурсов и различными узлами в config.xml. Не совсем понятно, как это происходит в Magento 2.

Для этого еще есть образец модуля или понятное руководство? Или работа в обратном направлении от существующей базовой модели (например, страницы CMS) является нашей единственной возможностью?

Алан Сторм
источник

Ответы:

4

Отследил это сам.

Во-первых, Magento 2 не требует дополнительного XML для создания модели CRUD. Magento 2 автоматически знает, как создать необходимую модель ресурса и объекты коллекции на основе соглашения об именах.

Magento 2 делает требуют

  • Модельный класс
  • Класс модели ресурсов
  • Коллекция Модель Класс
  • Схема установки класса

Особенности каждого из них выходят за рамки одного ответа Stack Exchange, но модель CMS Page предлагает простой пример каждого класса.

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

Кроме того, мой пестик инструмента для генерации кода в Magento 2 теперь имеет команду generate_crud_model .

Алан Сторм
источник
3

Для создания исходных таблиц базы данных вам необходимо создать файл InstallSchema.php в папке Setup вашего расширения. Это необходимо для реализации InstallSchemaInterface.

Вы заказали это расширение: https://github.com/tzyganu/Magento2SampleModule ? Это помогло мне понять многое о Magento 2 CRUD. Я думаю, что это совместимо с Magento 2.0.0, но я не уверен. Вы также можете найти пример InstallSchema там.

леший
источник
Magento недавно обновил наши собственные образцы модулей , которые вы также можете проверить.
Стив Джонсон
@SteveJohnson В этой ссылке есть пример модели CRUD? Я этого не вижу
Алан Сторм
Мне сказали, что есть модуль, который ожидает слияния, но я не знаю точных деталей. Это PR № 2 на внутреннем GitHub.
Стив Джонсон
2

Мой путь, следуйте шагам за шагом
1- Регистрация модуля (registration.php и module.xml)
2- Создание файла конфигурации системы (system.xml)
3- Создание файла конфигурации (config.xml)
4- Создание списков контроля доступа ( acl.xml)
5- Создание сценария установки (InstallSchema.php)
6- Управление сохранением сущности (модель, ресурс, коллекция)
7- Создание интерфейса внешнего интерфейса
8- Создание интерфейса внутреннего интерфейса

С шага 5 я думаю, что это довольно много времени. Пример вы можете увидеть в образцах из core magento. Это зависит от того, что вам нужно архивация
Простой плоский стол? Смотрите в модуле как смс. Этот модуль наиболее понятен для понимания
таблиц EAV? Смотрите в каталоге модулей заказчик, продажи, налог.

mrtuvn
источник