gpt4 book ai didi

magento2 - Magento 2 : Override/Rewrite Block, 使用插件和首选项的模型、 Controller 、助手

转载 作者:行者123 更新时间:2023-12-05 00:54:48 30 4
gpt4 key购买 nike

Magento 2:使用插件和首选项覆盖/重写 block 、模型、 Controller 、助手。

如何覆盖助手、 block 、模型 View ?

最佳答案

覆盖 Block、Model 和 Controller 文件有两个步骤

1) 在 di.xml 中添加覆盖首选项

2) 在你的模块中创建 block 、模型和 Controller 文件

Namespace: Prince

Module Name: Helloworld



用于覆盖目录产品 ListProduct block 。

1) 在文件夹 Prince/Helloworld/etc 中创建 di.xml 文件
<?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) 在 Prince/Helloworld/Block/Rewrite/Product 文件夹中创建 ListProduct.php block 文件
<?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之前添加首选项
<preference for="Magento\Catalog\Model\Product" type="Prince\Helloworld\Model\Rewrite\Catalog\Product" /> 

2) 在 Prince/Helloworld/Model/Rewrite/Catalog 文件夹中创建 Product.php 模型文件
<?php
namespace Prince\Helloworld\Model\Rewrite\Catalog;

class Product extends \Magento\Catalog\Model\Product
{
public function isSalable()
{
// Do your code here

return parent::isSalable();
}

}

对于覆盖 Controller

1)在di.xml之前添加首选项
<preference for="Magento\Catalog\Controller\Product\View" type="Prince\Helloworld\Controller\Rewrite\Product\View" />

2) 在文件夹 Prince/Helloworld/Controller/Rewrite/Product 中创建 View.php Controller 文件
class View extends \Magento\Catalog\Controller\Product\View
{
/**
* @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
*/
public function execute()
{
// Do your stuff here
return parent::execute();
}
}

您可以使用相同的方法覆盖其他 block 、模型和 Controller 。

关于magento2 - Magento 2 : Override/Rewrite Block, 使用插件和首选项的模型、 Controller 、助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424290/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com