ब्लॉक, मॉडल और कंट्रोलर फ़ाइल को ओवरराइड करने के लिए दो चरण हैं
1) di.xml में वरीयता जोड़ें
2) अपने मॉड्यूल में ब्लॉक, मॉडल और कंट्रोलर फाइल बनाएं
नामस्थान: राजकुमार
मॉड्यूल का नाम: हेलोवर्ल्ड
उदाहरण के लिए कैटलॉग उत्पाद ListProduct ब्लॉक को ओवरराइड करने के लिए
1) फ़ोल्डर में di.xml फ़ाइल बनाएँPrince/Helloworld/etc
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Model\Product" type="Prince\Helloworld\Model\Rewrite\Catalog\Product" />
</config>
2) फ़ोल्डर में ListProduct.php बनाएँPrince/Helloworld/Block/Rewrite/Product
<?php
namespace Prince\Helloworld\Block\Rewrite\Product;
class ListProduct extends \Magento\Catalog\Block\Product\ListProduct
{
public function _getProductCollection()
{
// Do your code here
}
}
उदाहरण के लिए कैटलॉग उत्पाद मॉडल को ओवरराइड करने के लिए।
1) पर di.xml में वरीयता जोड़ेंPrince/Helloworld/etc
<preference for="Magento\Catalog\Model\Product" type="Prince\Helloworld\Model\Rewrite\Catalog\Product" />
2) फ़ोल्डर में Product.php मॉडल फ़ाइल बनाएँ Prince/Helloworld/Model/Rewrite/Catalog
<?php
namespace Prince\Helloworld\Model\Rewrite\Catalog;
class Product extends \Magento\Catalog\Model\Product
{
public function isSalable()
{
// Do your code here
return parent::isSalable();
}
}
ओवरराइडिंग कंट्रोलर
1) पर di.xml में वरीयता जोड़ेंPrince/Helloworld/etc
<preference for="Magento\Catalog\Controller\Product\View" type="Prince\Helloworld\Controller\Rewrite\Product\View" />
2) फ़ोल्डर में View.php बनाएँPrince/Helloworld/Controller/Rewrite/Product
class View extends \Magento\Catalog\Controller\Product\View
{
public function execute()
{
// Do your stuff here
return parent::execute();
}
}
आप एक ही दृष्टिकोण का उपयोग करके अन्य ब्लॉक, मॉडल और नियंत्रकों को ओवरराइड कर सकते हैं।