Was ist die Verwendung von pagefactory in Magento 2?

7

Obwohl ich auf einen Blog von pagefactory verweise, verstehe ich die Verwendung von page factory nicht.

Es gibt einen Code in der Steuerung. Könnten Sie mir bitte erklären, wie es funktioniert?

public function execute()
{
    return $this->_pageFactory->create();
}
Bhakti Thakkar
quelle
2
Pagefactory wird verwendet, um das Layout zu initialisieren.
Ansar Husain

Antworten:

8

Pagefactory wird verwendet, um das Layout zu initialisieren.

Es funktioniert in Magento2 genauso wie in Magento1 mit dem folgenden Code

$this->_view->loadLayout();

 $this->_view->renderLayout();
Ansar Husain
quelle
Vielen Dank, Sir, und könnten Sie mir noch einmal helfen? Was ist postfactory.
Bhakti Thakkar
2

Im Gegensatz zu Magento 1.x werden in Magento 2 Fabriken eingeführt, mit denen Daten eines bestimmten Objekts festgelegt und abgerufen werden. Best Practice ist, anstelle des Objektmanagers Fabriken zu verwenden.

Auf diese Weise führt Magento alle Vorgänge systematisch aus, ohne den Anforderungsfluss zu ändern. Wenn also ein Modul, das die Funktionalität überschreibt, über die neuesten Daten verfügen sollte.

Naveed Asim
quelle
2

Mit der Seitenfactory wird ein Seitenergebnis erstellt, indem das Layout initialisiert wird. Page Factory erstellt das Antwortobjekt in execute ()

public function execute()
{
    return $this->pageResultFactory->create();
}

Wenn Sie ein Seitenergebnisobjekt von der Ausführungsmethode zurückgeben, weisen Sie Magento an, das Rendern von XML-Dateiseiten mit Standardlayout zu starten.

Prinz Patel
quelle
2

Magento2 verwendet das Factory Method Design Pattern, das diese Definition und eine Schnittstelle zum Erstellen eines Objekts angibt. Unterklassen können jedoch entscheiden, welche Klasse instanziiert werden soll. Mit dem Entwurfsmuster für Factory-Methoden kann eine Klasse die Instanziierung auf Unterklassen verschieben.

Fabriken sind Serviceklassen, die nicht injizierbare Klassen instanziieren, dh Modelle, die eine Datenbankentität darstellen. Sie erstellen eine Abstraktionsebene zwischen dem ObjectManager und dem Geschäftscode.
Sie sind ein automatisch generierter Klassentyp.
Wenn Sie in einem Klassenkonstruktor auf eine Factory verweisen, generiert der Objektmanager von Magento die Factory-Klasse, wenn sie nicht vorhanden ist. Weitere Informationen finden Sie in den folgenden Artikeln:

Anshu Mishra
quelle
1

https://www.mageplaza.com/magento-2-module-development/factory-object-magento-2.html

In Magento 2 müssen alle Controller-Aktionen etwas zurückgeben, im Gegensatz zu M1, wo eine Controller-Aktion nur etwas ausgeben oder eine Umleitung durchführen würde. Das Ergebnis der Ausführungsmethode von jedem Controller wird in Magento \ Framework \ App \ FrontController :: dispatch () in Zeile $ result = $ actionInstance-> execute () generiert. Und kehrte zurück.

Abhängig von der Art des zurückgegebenen Ergebnisses wird eine andere Aktion ausgeführt. Das Ergebnis kann eine Instanz sein von:

\ Magento \ Framework \ View \ Result \ Page - rendert tatsächlich HTML \ Magento \ Framework \ Controller \ Result \ Redirect - leitet auf eine andere Seite um \ Magento \ Framework \ Controller \ Result \ Forward - leitet an eine andere Aktion weiter (interne Weiterleitung) \ Magento \ Framework \ Controller \ Result \ Json - Gibt ein JSON-Objekt zurück. \ Magento \ Framework \ Controller \ Result \ Raw - gibt alles zurück, was Sie zurückgeben sollen (Zeichenfolge).

Spezifisches ErgebnisPageFactory ist eine Instanz von \ Magento \ Framework \ View \ Result \ PageFactory. Wenn Sie create für diese Klasse aufrufen, wird eine oben beschriebene Instanz von \ Magento \ Framework \ View \ Result \ Page zurückgegeben. Wenn dies verwendet wird und das Ergebnis zurückgegeben wird, bedeutet dies, dass Ihre Aktion HTML zurückgibt. Es hat einen ähnlichen Effekt wie $ this-> loadLayout (); von Magento 1. Wenn Sie create für das resultPageFactory-Objekt aufrufen, wird das Layout tatsächlich geladen

Shubham Singh
quelle