从1.5.0.1>;升级;1.6.2:签出错误(无效方法Mage_Checkout_Block_Onepage_Bi


Upgrade from 1.5.0.1 > 1.6.2: Checkout error (Invalid method Mage_Checkout_Block_Onepage_Billing::isTaxvatEnabled)

我真的希望有人以前见过这个,谷歌搜索并没有让我走得太远。

我正在将我的店铺从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究竟是什么?我也尝试过在这个错误后使用magento结账的解决方案,但没有成功。

这是一个测试安装,我真的很想在1.6.2上线之前把它清理干净。感谢您的真知灼见。

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

  1. "您"(表示您或Magento Connect)无法更新app/code/core/Mage/Checkout/Block/Onepage/Billing.php 中的文件

  2. 您、以前的开发人员或第三方模块创建了一个代码池覆盖,并且有一个旧版本的计费块存在于app/code/community/Mage/Checkout/Block/Onepage/Billing.phpapp/code/local/Mage/Checkout/Block/Onepage/Billing.php或添加到路径中的其他位置(很少,但我见过)。

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

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

如果这个文件在core中,那么升级失败了,系统的一半是1.5,一半是1.6。最常见的原因是脑死亡的Magento Connect,它会在某些类型的文件权限错误时自动失败,尽管未能上传所有文件是另一个常见原因。重新开始升级,将升级文件树与新下载的树进行比较。

如果这个文件在其他地方,你需要

  1. 确定向communitylocal代码池中的文件中添加了哪些方法、属性或其他代码

  2. 复制1.6.2 Billing.php

  3. 将方法从一添加到文件

  4. 将本地中的Billing.php替换为刚才创建的Billing.php