【问题标题】:Why does my model rewrite not run?为什么我的模型重写不运行?
【发布时间】:2013-12-19 22:43:02
【问题描述】:

管理面板(或其他地方)中的某些配置可以阻止模型重写运行吗?

这是模块的 config.xml 中的重写声明:

  <global>
    <models>
      <cataloginventory>
        <rewrite>
          <stock_item>My_Mod_CatalogInventory_Model_Stock_Item</stock_item>
        </rewrite>
      </cataloginventory>
    </models>
  </global>

模块处于活动状态 - 这是肯定的,因为其他模块代码正在运行。

我重写了 Mage_CatalogInventory_Model_Stock_Item 中的 checkQuoteItemQty 方法,但它是来自正在运行的父类的 checkQuoteItemQty,不知道为什么...

    class My_Mod_CatalogInventory_Model_Stock_Item extends Mage_CatalogInventory_Model_Stock_Item
    {
        public function checkQuoteItemQty($qty, $summaryQty, $origQty = 0)
        {
           // this code is not running...
           exit('hello there');

【问题讨论】:

    标签: magento model rewrite


    【解决方案1】:

    调试任何重写的第 1 步 - 尝试自己手动实例化类中的对象,并确保 您的 类是使用的类。

    $object = Mage::getModel('cataloginventory/stock_item');
    var_dump(get_class($object));
    

    如果上面没有输出My_Mod_CatalogInventory_Model_Stock_Item,请检查您的config.xml是否正确,您的Item.php文件是否在正确的文件夹中,最后跳转到getGroupedClassName method并添加足够的调试代码确定为什么 Magento 没有看到您的重写。

    【讨论】:

    • 谢谢。我把var_dump放在index.php的底部,原来有另一个模块重写了相同的核心模型。
    • 我遇到过同样的问题 2-3 次,我曾经在整个源代码中搜索类名文本,如果某个类扩展了原始类。现在我有标准的方法来找出相同的。谢谢艾伦风暴
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2010-10-16
    • 1970-01-01
    • 2021-10-06
    • 2011-12-17
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多