Я вижу , что в разработке ветви Magento 2 репо методы load
и save
из Magento\Framework\Model\AbstractModel
класса устарели.
Но в ядре есть gazillion классов, которые расширяют этот класс и используют save
и load
.
При создании моего собственного модуля для CRUD-части моих сущностей я следую тем же рекомендациям, что и основной модуль.
Но так как эти методы устарели, я предпочел бы быть готовым к будущему.
Что я должен использовать вместо них? Или я должен расширить что-то еще?
57
Ответы:
Вы должны использовать Модуль Сервис Контракт.
Например, для продукта вы должны использовать ProductRepositoryInterface
Если договор на обслуживание модуля недоступен, вы можете использовать ResourceModel для сохранения сущностей.
источник
ProductRepositoryInterface
все еще используетload
методыget
иgetById
. Должен ли я использовать модель ресурсов для моего модуля вместо этогоload
метода?Из того, что я понял, что это произойдет в Magento собирается переключиться на увлажняющие с
extract()
иhydrate()
методами.Эта ссылка работала, но похоже, что команда Magento откатила ее: https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/Model/Entity/EntityHydrator.php
Вы можете найти историю коммита здесь: https://github.com/magento/magento2/tree/09132da06e18dde0f90aabfc962db2bc19b64f3c/lib/internal/Magento/Framework/Model/Entity
Важные файлы:
EntityHydrator.php
EntityMetadata.php
HydratorInterface.php
MetadataPool.php
Я также предлагаю вам проверить файлы в
Action
папке, а такжеSequence
файлы.Из того, что я понял (я могу быть совершенно не прав):
Action
папке являются действиями CRUDSequence
файлы итераторы?Это был разговор, который произошел некоторое время назад (это был Алан Сторм, который упомянул об этом? Не могу вспомнить), поэтому я не уверен, что команда Magento все еще идет этим путем.
Обновить
Из моего исследования, внутренний билет Magento относительно этого изменения - MAGETWO-50676, вот соответствующие коммиты, которые мне удалось найти:
Возможно, там больше TBH, но я не чувствую необходимости просматривать весь репозиторий для коммитов ^^
Если вы не знакомы с гидраторами, я предлагаю вам проверить эту ссылку: http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
Обновление от 2.1
Magento теперь использует
EntityManager
класс для замены наследования, вы можете найти больше информации здесь: Magento 2.1: использование менеджера сущностейисточник
load()/save()
гидраторов. Я предполагаю, чтоSequences
работают как итераторы иActions
являются действиями CRUDСм. Описание в коде класса https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Model/AbstractModel.php#L626.
источник
load
save
иdelete
собираемся уходить?Альтернативой Magento 2 Deprecated Load Method является метод загрузки модели ресурсов.
здесь первый параметр - это объект модели, а второй - идентификатор, который вы хотите загрузить.
Альтернативой устаревшему методу сохранения Magento 2 является метод сохранения модели ресурсов.
Метод save принимает только один параметр, который является объектом вашей модели.
источник