从1.5.0.1升级> 1.6.2:Checkout错误(无效方法Mage_Checkout_Block_Onepage_Billing :: isTaxvatEnabled)

时间:2012-02-08 00:24:44

标签: php magento

我真的希望有人之前遇到过这种情况,谷歌搜索并没有让我走得太远。

我正在将我的商店从1.5.0.1升级到1.6.2。值得庆幸的是,一切似乎进展顺利,但我遇到了一个非常奇怪的问题。

看来Magento现在在默认主题中包含了一个新模板 - app/design/frontend/base/default/template/persistent

当我尝试结帐并运行一些测试订单时,我一直收到此错误 - http://pastie.org/3337035

所以我认为我的自定义主题与升级有关,并暂时切换回新的默认主题。不,仍然有同样的错误。然后我尝试将新的/persistent模板目录复制到我的自定义主题,这也没有帮助。

此时我的解决方案是将相关代码注释掉,如下所示:(在persistent / checkout / onepage / billing.phtml中)

<?php //if ($this->isTaxvatEnabled()):?>
<li><?php //echo $this->getTaxvatHtml() ?></li>
<?php //endif; ?>

这似乎修复了错误并允许结帐无问题,但我真的想知道这里发生了什么。究竟什么是Taxvat?我也试过这篇文章中的解决方案 - error with magento checkout无济于事。

这是一个测试装置,我真的想在我使用1.6.2之前清除它。感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

您的phtml模板文件没问题。但是,其父块(Mage_Checkout_Block_Onepage_Billing)缺少isTaxvatEnabled。这种方法是Magento 1.6分支中的一种新方法,因此有两个可能的原因

  1. “您”(意味着您或Magento Connect)无法更新app/code/core/Mage/Checkout/Block/Onepage/Billing.php

  2. 中的文件
  3. 您或之前的开发人员或第三方模块创建了代码池覆盖,并且有一个旧版本的结算单元位于app/code/community/Mage/Checkout/Block/Onepage/Billing.phpapp/code/local/Mage/Checkout/Block/Onepage/Billing.php或其中另一个被添加到路径的位置(很少见,但我已经看过了)。

  4. 查找此文件的最快方法是将以下代码添加到PHTML模板文件中

    $rClass = new ReflectionClass($this);
    var_dump($rClass->getFilename());
    

    如果此文件位于core,那么您的升级失败,并且您的系统只有1.5和1.5的一半。造成这种情况的最常见原因是脑死亡的Magento Connect会在某些类型的文件权限错误中无声地失败,尽管上传所有文件失败是另一个常见原因。再次开始升级,将升级文件树与新下载的树进行区分。

    如果此文件位于其他位置,则需要

    1. 确定在communitylocal代码池中添加了哪些方法,属性或其他代码

    2. 制作1.6.2 Billing.php

    3. 的副本
    4. 将方法从一个添加到文件

    5. 将本地Billing.php替换为您刚创建的Billing.php