0

我正在为我的一位客户定制 Oxidshop。我想自定义 BasketComponent 文件中的“changebasket”函数来添加更多的验证。为此,我还创建了一个自定义模块。我正在尝试使用元数据文件扩展类。

'extend' => array(
        'oxcmp_basket' => \MyVendor\Basket\Application\Components\BasketComponent::class,
    ),

BasketComponent 文件具有以下代码,

<?php
namespace MyVendor\Basket\Application\Components;

/**
 * Class LinslinSliderMain.
*/
class BasketComponent extends BasketComponent_parent
{
 /**
 * @param null $sProductId
 * @param null $dAmount
 * @param null $aSel
 * @param null $aPersParam
 * @param bool $blOverride
 */
 public function changebasket($sProductId = null, $dAmount = null, $aSel = null, $aPersParam = null, $blOverride = true)
 {
    echo 'call success';exit;
    parent::changebasket($sProductId, $dAmount, $aSel, $aPersParam, $blOverride);
 }
}

被激活。但是,当我在前端刷新任何页面时,它会自动停用。我不知道,代码有什么问题。

编辑:我在oxideshop.log 文件中收到此错误

Module class MyVendor\Basket\Application\Components\BauerBasketComponent not found. Module ID basket disabled.
4

1 回答 1

0

根据您的 OXID eShop 版本,它可能是不同的行,但您声明的错误消息来自OxidEsales\EshopCommunity\Core\Module\ModuleChainsGenerator::onModuleExtensionCreationError.

激活您的模块时,系统会尝试生成包含您的BasketComponent类的类链。由于您的类是一个命名空间类,OXID 会尝试检查它是否可以通过 composer 自动加载文件找到该类,如果没有,商店会抛出此异常。

所以我假设模块不是通过作曲家安装的,至少作曲家似乎不知道命名空间。您可以在模块文档中查看如何实现这一点

希望我能帮上忙

/弗洛

于 2020-05-07T09:55:01.063 回答