Veo que en la rama de desarrollo del repositorio de Magento 2, los métodos load
y save
de la Magento\Framework\Model\AbstractModel
clase están en desuso.
Pero hay un millón de clases en el núcleo que amplían esta clase y usan save
y load
.
Al crear mi propio módulo para la parte CRUD de mis entidades, sigo las mismas pautas que un módulo central.
Pero como estos métodos están en desuso, prefiero estar preparado para el futuro.
¿Qué debo usar en lugar de ellos? ¿O debería extender algo más?
57
Respuestas:
Debe usar el contrato de servicio del módulo.
Por ejemplo, para un producto, debe usar ProductRepositoryInterface
Si el contrato de servicio del módulo no está disponible, puede usar ResourceModel para guardar entidades.
fuente
ProductRepositoryInterface
todavía utilizaload
en los métodosget
ygetById
. ¿Debo usar el modelo de recursos para mi módulo en lugar de esteload
método?Por lo que entendí, lo que va a pasar es Magento va a cambiar a hidratantes con
extract()
yhydrate()
métodos.Este enlace solía funcionar pero parece que el equipo de Magento lo retiró: https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/Model/Entity/EntityHydrator.php
Sin embargo, puede encontrar la historia de la confirmación aquí: https://github.com/magento/magento2/tree/09132da06e18dde0f90aabfc962db2bc19b64f3c/lib/internal/Magento/Framework/Model/Entity
Los archivos importantes son:
EntityHydrator.php
EntityMetadata.php
HydratorInterface.php
MetadataPool.php
También le sugiero que revise los archivos debajo de la
Action
carpeta, así como losSequence
archivos.Por lo que entendí (puedo estar totalmente equivocado aquí):
Action
carpeta son acciones CRUDSequence
archivos son iteradores?Esa fue una conversación que ocurrió hace un tiempo (¿fue Alan Storm quien lo mencionó? No puedo recordar), así que no estoy seguro de si el equipo de Magento todavía está yendo por ese camino.
Actualizar
Según mi investigación, el boleto interno de Magento con respecto a este cambio es MAGETWO-50676, aquí están los compromisos relacionados que logré encontrar:
Probablemente haya más TBH, pero no tengo ganas de buscar en todo el repositorio mensajes de confirmación ^^
Si no está familiarizado con los hidratadores, le sugiero que consulte ese enlace: http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
Actualización desde 2.1
Magento ahora está usando la
EntityManager
clase para reemplazar la herencia. Puede encontrar más información aquí: Magento 2.1: usando el administrador de entidadesfuente
load()/save()
hidratantes. Supongo queSequences
funcionan como iteradores yActions
son acciones CRUDVer descripción en el código de clase https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Model/AbstractModel.php#L626
fuente
load
save
ydelete
qué se va a ir?Una alternativa al método de carga obsoleto de Magento 2 es el método de carga del modelo de recurso.
aquí el primer parámetro es el objeto modelo y el segundo parámetro es la identificación que desea cargar.
Una alternativa al método de guardado obsoleto de Magento 2 es el método de guardado del modelo de recurso.
El método save solo acepta un parámetro que es su objeto modelo.
fuente