Ich sehe, dass im Entwicklungszweig des Magento 2-Repos die Methoden load
und save
aus der Magento\Framework\Model\AbstractModel
Klasse veraltet sind.
Aber es gibt eine Unmenge von Klassen im Kern, die diese Klasse erweitern und save
und verwenden load
.
Beim Erstellen eines eigenen Moduls für den CRUD-Teil meiner Entitäten befolge ich dieselben Richtlinien wie bei einem Kernmodul.
Da diese Methoden jedoch veraltet sind, wäre ich eher für die Zukunft gerüstet.
Was soll ich stattdessen verwenden? Oder sollte ich noch etwas erweitern?
57
Antworten:
Sie sollten den Modul-Servicevertrag verwenden.
Für Produkt sollten Sie beispielsweise ProductRepositoryInterface verwenden
Wenn der Modul-Servicevertrag nicht verfügbar ist, können Sie mit ResourceModel Entitäten speichern.
quelle
ProductRepositoryInterface
nochload
in den Methodenget
und verwendetgetById
. Sollte ich anstelle dieserload
Methode das Ressourcenmodell für mein Modul verwenden ?Nach meinem Verständnis wird Magento auf Hydratoren mit
extract()
undhydrate()
Methoden umstellen .Dieser Link hat funktioniert, aber es scheint, als hätte das Magento-Team ihn zurückgesetzt: https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/Model/Entity/EntityHydrator.php
Den Verlauf des Commits finden Sie hier: https://github.com/magento/magento2/tree/09132da06e18dde0f90aabfc962db2bc19b64f3c/lib/internal/Magento/Framework/Model/Entity
Die wichtigen Dateien sind:
EntityHydrator.php
EntityMetadata.php
HydratorInterface.php
MetadataPool.php
Ich schlage auch vor, dass Sie die Dateien unter dem
Action
Ordner sowie dieSequence
Dateien auschecken.Soweit ich es verstanden habe (hier kann ich mich völlig irren):
Action
Ordner sind CRUD-AktionenSequence
Sind die Dateien Iteratoren?Das war ein Gespräch, das vor einiger Zeit stattgefunden hat (Alan Storm hat es erwähnt? Ich kann mich nicht erinnern), also bin ich mir nicht sicher, ob das Magento-Team immer noch so vorgeht.
Aktualisieren
Nach meinen Recherchen lautet das interne Magento-Ticket für diese Änderung "MAGETWO-50676". Hier sind die zugehörigen Commits, die ich gefunden habe:
Es gibt wahrscheinlich mehr TBH, aber ich habe keine Lust, im gesamten Repo nach Commit-Nachrichten zu suchen ^^
Wenn Sie nicht mit Hydratoren vertraut sind, empfehlen wir Ihnen, diesen Link zu überprüfen: http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
Update von 2.1
Magento verwendet jetzt die
EntityManager
Klasse, um die Vererbung zu ersetzen. Weitere Informationen finden Sie hier: Magento 2.1: Verwenden des Entity Managersquelle
load()/save()
zu Hydratoren zu implementieren. IchSequences
Actions
Siehe Beschreibung im Klassencode https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Model/AbstractModel.php#L626
quelle
load
save
unddelete
werden sie weggehen?Eine Alternative zur veralteten Lademethode von Magento 2 ist die Lademethode des Ressourcenmodells.
Hier ist der erste Parameter das Modellobjekt und der zweite Parameter die ID, die Sie laden möchten.
Eine Alternative zur veralteten Speichermethode von Magento 2 ist die Speichermethode des Ressourcenmodells.
Die Speichermethode akzeptiert nur einen Parameter, der Ihr Modellobjekt ist.
quelle