दो कोड समान हैं?
मैं Magento 2 सीखना शुरू कर रहा हूँ और मैंने नियंत्रक बनाने के लिए कुछ निर्देश पढ़े।
Index.php हैं। Magento 2 _ विकास रसोई की किताब और वेबसाइट पर एक और।
/** @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;
}
और दूसरा कोड जो मैंने पढ़ा।
class Index extends Action
{
public function execute()
{
$this->_view->loadLayout();
$this->_view->renderLayout();`
मैंने देखा कि, दो कोड एक ही लेआउट पृष्ठ Magento दिखाते हैं। तो इसके बीच क्या अंतर है? `
जवाब
आम
Magento 2 में सभी नियंत्रक क्रियाओं को M1 के विपरीत कुछ वापस करना होगा, जहां एक नियंत्रक कार्रवाई सिर्फ कुछ आउटपुट करेगी या एक रीडायरेक्ट करेगी। प्रत्येक नियंत्रक से निष्पादित विधि का परिणाम Magento\Framework\App\FrontController::dispatch()लाइन पर उत्पन्न होता है $result = $actionInstance->execute();और वापस आ जाता है।
लौटे परिणाम के प्रकार के आधार पर एक अलग कार्रवाई की जाती है। इसका परिणाम और उदाहरण हो सकता है:
\ Magento \ फ्रेमवर्क \ दृश्य \ परिणाम \ पृष्ठ - वास्तव में HTML प्रदान करता है
\ Magento \ फ्रेमवर्क \ नियंत्रक \ परिणाम \ पुनर्निर्देशन - दूसरे पृष्ठ पर पुनर्निर्देशित करता है
\ Magento \ फ्रेमवर्क \ नियंत्रक \ परिणाम \ आगे - एक अन्य कार्रवाई के लिए आगे (आंतरिक पुनर्निर्देशित)
\ Magento \ फ्रेमवर्क \ नियंत्रक \ परिणाम \ Json - एक वस्तु वस्तु लौटाता है।
\ Magento \ फ्रेमवर्क \ नियंत्रक \ परिणाम \ _ - आप इसे वापस करने के लिए जो भी बताएं (स्ट्रिंग)।
विशिष्ट
resultPageFactoryका एक उदाहरण है \Magento\Framework\View\Result\PageFactoryऔर जब उस वर्ग पर कॉल करते हैं तो यह \Magento\Framework\View\Result\Pageऊपर वर्णित उदाहरण देता है। जब इसका उपयोग किया जाता है और परिणाम लौटाया जाता है तो इसका अर्थ है कि आपकी कार्रवाई HTML को वापस कर देगी। इसका $this->loadLayout();मैगेंटो से किसी तरह का एक समान प्रभाव पड़ता है । जब आप कॉल करते हैं तो परिणाम पेजेजफैक्ट ऑब्जेक्ट पर यह वास्तव में लेआउट को लोड करता है।