मत करो।
यह ObjectManager::getInstance()->create()
एक टेम्पलेट में उपयोग करने जैसा है !
एक कस्टम ब्लॉक का उपयोग करें जो एक कंस्ट्रक्टर निर्भरता के रूप में सहायक को प्राप्त करता है, और एक प्रॉक्सी विधि जोड़ें जो सहायक विधि को कहता है।
टेम्पलेट में:
$block->customMethod()
ब्लॉक में:
public function __construct(Path/To/Helper/Class $helperClass, ...other dependencies...)
{
$this->helper = $helperClass;
// ...other assignments and call to parent::__construct()
}
public function customMethod()
{
return $this->helper->customMethod();
}
ओओपी सिद्धांत में "कानून के कानून" का उल्लंघन करने से बचा जाता है। यह टेम्प्लेट के बजाय ब्लॉक में व्यापारिक तर्क को एन्क्रिप्ट करता है। एक साइड इफेक्ट के रूप में यह लॉजिक को अधिक टेस्टी बनाता है क्योंकि लॉजिक को ब्लॉक में ले जाया जाता है।
हेल्पर वर्गों में किस तर्क के बारे में, मुझे लगता है कि मैगनेटो में 2 मददगार ज्यादातर सेवाओं के लिए समझ में आते हैं, जैसे कि कुछ ऐसा है जो मॉडल नहीं है, लेकिन पुन: प्रयोज्य कोड है, उदाहरण के लिए मूल्य स्वरूपण (जो कोर में निहित है, लेकिन मैं 'अभी एक बेहतर उदाहरण के बारे में सोचो)।
di.xml
ब्लॉक वर्ग प्रकार के लिए वरीयता का उपयोग करते हुए , कुछ लेआउट कॉन्फ़िगरेशन को न रखें। मैंने उदाहरण के लिए इसे कक्षा के लिए करने की कोशिश की\Magento\Catalog\Block\Product\View\Type\Simple
,default.phtml
हमारे टेम्पलेट में उपयोग किए गए टेम्पलेट को अनदेखा किया गया है। इस समय कोई सुराग नहीं