Sind die beiden Codes gleich?
Ich fange an, Magento 2 zu lernen und lese einige Anweisungen zum Erstellen von Controller.
Es gibt die index.php. auf Magento 2 _ Entwicklungskochbuch und ein weiteres auf der Website.
/** @var \Magento\Framework\View\Result\PageFactory */
protected $resultPageFactory; public function __construct( \Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory
$resultPageFactory ){ $this->resultPageFactory = $resultPageFactory; parent::__construct($context);
}
public function execute()
{
$resultPage = $this->resultPageFactory->create();
return $resultPage;
}
und der andere Code, den ich gelesen habe.
class Index extends Action
{
public function execute()
{
$this->_view->loadLayout();
$this->_view->renderLayout();`
Ich habe gesehen, dass zwei Codes die gleiche Layoutseite Magento anzeigen. Also, was macht der Unterschied zwischen dem? `
Antworten
Allgemeines
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 Magento\Framework\App\FrontController::dispatch()online generiert $result = $actionInstance->execute();und zurückgegeben.
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 zu einer anderen Seite weiter
\ Magento \ Framework \ Controller \ Result \ Forward - Weiterleitung an eine andere Aktion (interne Umleitung)
\ 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).
Spezifisch
resultPageFactoryist eine Instanz von \Magento\Framework\View\Result\PageFactoryund beim Aufrufen von create für diese Klasse wird eine \Magento\Framework\View\Result\Pageoben beschriebene Instanz von 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();Magento 1. Wenn Sie create für das resultPageFactory-Objekt aufrufen, wird das Layout tatsächlich geladen.