Magento 1 में, यदि आप अपने कंट्रोलर एक्शन से "व्यू" तक डेटा पास करना चाहते हैं (यानी आपके लेआउट में एक ब्लॉक, आप कर सकते हैं)
वैश्विक रजिस्ट्री के माध्यम से एक मूल्य / वस्तु जोड़ें
Mage::registerसीधे एक ब्लॉक ऑब्जेक्ट लाएं और चलाने के बाद प्राप्त ब्लॉक ऑब्जेक्ट पर डेटा गुण सेट करें
loadLayoutphtmlफ़ाइलों में ब्लॉक ऑब्जेक्ट्स पर कॉल विधि , और ब्लॉक ऑब्जेक्ट्स कंट्रोलर एक्शन में पहले से सेव किए गए डेटा को पढ़ने के लिए मॉडल / डेटाबेस लेयर का उपयोग करते हैं
डेटाबेस से पढ़ने के लिए ब्लॉक ऑब्जेक्ट विधियों का उपयोग करना अभी भी Magento 2 में काम करने के लिए प्रकट होता है - जो कुछ प्रकार के संचालन के लिए उपयुक्त है। हालाँकि,
Magento 2 में एक वैश्विक रजिस्ट्री नहीं है (या वहाँ है?)
लेआउट सिस्टम अब एक फैक्ट्री के माध्यम से एक पेज ऑब्जेक्ट बनाकर काम करता है, और आप उसी तरह से संदर्भों को ब्लॉक नहीं कर सकते हैं जिस तरह से आप Magento 1 में कर सकते हैं
क्या यह संभव है कि मैगेंटो 2 में कंट्रोलर एक्शन से डेटा को सीधे किसी दृश्य में पास किया जा सके? या यह भी Magento के बहादुर नए डिजाइन पैटर्न ™ दुनिया के लिए एक पैटर्न प्रत्यक्ष है? यदि यह बहुत ही प्रत्यक्ष है, तो एक टेम्प्लेट में प्रदर्शित की जाने वाली कुछ गणना की हुई जानकारी के लिए क्या करना चाहिए, लेकिन क्या करना चाहिए, लेकिन उस जानकारी को एक स्टेटफुल सिस्टम में स्टोर नहीं करना चाहिए (अर्थात हम इसे सहेजना नहीं चाहते हैं। डेटाबेस)
मैं खुद को एक साथ हैक करने के लिए कुछ अलग तरीके के बारे में सोच सकता हूं - लेकिन मुझे इस बात में दिलचस्पी है कि मैगेंटो 2 आपको कैसे करना चाहता है।
नोट : मुझे एहसास है कि इस तरह से कुछ का उपयोग कर एक नियंत्रक कार्रवाई में एक ब्लॉक उदाहरण प्राप्त करना संभव है
$resultPage = $this->resultPageFactory->create();
$block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
var_dump(spl_object_hash($block));
Magento 2 कोर कोड अक्सर ऐसा करता है। हालाँकि - कंट्रोलर ऑब्जेक्ट में प्राप्त ब्लॉक ऑब्जेक्ट एक अलग ऑब्जेक्ट लगती है, जो phtmlटेम्पलेट के माध्यम से उपलब्ध होती है $thisया $block(पूर्व $this) ऑब्जेक्ट प्रतीत होती है जो वास्तव में टेम्पलेट को प्रस्तुत करता है, जबकि बाद में ( $block) प्रतीत होता है Magento ब्लॉक प्रकार की एक आवृत्ति)।
#File: path/to/template.phtml
var_dump(spl_object_hash($block));
var_dump(spl_object_hash($this));
मैं कहता हूं "प्रतीत होता है" क्योंकि अगर मैं नियंत्रक क्रिया विधि में डेटा सेट करता हूं, तो यह phtmlटेम्पलेट में उपलब्ध नहीं है - और यदि मैं spl_object_hashऊपर दिए गए परिणामों की तुलना करता हूं, तो मुझे तीन अलग-अलग हैश मिलते हैं। हालाँकि, मैं इस सब के लिए काफी नया हूँ कि उपरोक्त कुछ अन्य त्रुटि हो सकती है - इसलिए यदि आप ब्लॉक पर डेटा सेट करने में सक्षम हैं और इसे एक टेम्पलेट में लाना चाहते हैं तो मुझे इसके बारे में सुनना अच्छा लगेगा !