Magento CE 1.9.1访客登录“从CE 1.9.0升级后,请确保您的密码匹配”错误

时间:2014-12-15 06:14:19

标签: php e-commerce magento-1.9.1

我正在开发Magento网站,最近从CE 1.9.0升级到CE 1.9.1。我注意到,当我尝试以客人身份结账时,我现在遇到了错误。

1)我在步骤1中选择了客人结账 2)我在账单信息中填写表格,并将“发货到该地址”检查 3)当我继续时,我会在弹出框中显示“请确保您的密码匹配”错误

在System-> Config-> Sales-> Checkout我有以下

启用单页结帐=是
允许访客结帐=是

我查看了Google搜索中的一些建议,包括stackoverflow上的结果,虽然他们列出了主题中的问题,但它们似乎并不相关。我见过的解决方案似乎与密码不匹配和验证问题有关。

有人可以建议解决自升级以来似乎已经弹出的来宾购物车登录问题吗?

1 个答案:

答案 0 :(得分:2)

这有点旧,但值得回答......这似乎会影响像结构模块一样的网站,例如Templates-Master FireCheckOut。

在从1.9.0跳到1.9.1时,法师核心发生了变化:

/app/code/core/Mage/Customer/Model/Customer.php - Line:840
$confirmation = $this->getConfirmation();

为:

/app/code/core/Mage/Customer/Model/Customer.php - Line:841
$confirmation = $this->getPasswordConfirmation();

对于FireCheckOut,这意味着我必须进行以下更改:

/app/code/local/TM/FireCheckout/Model/Type/Standard.php ~line 797 to:
if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
    // set customer password
    $password = $customerRequest->getParam('customer_password');
    if (empty($password)) {
        $password = $customer->generatePassword();
        $customer->setPassword($password);
        $customer->setConfirmation($password);
        $customer->setPasswordConfirmation($password); // Added this line ***
    } else {
        $customer->setPassword($customerRequest->getParam('customer_password'));
        $customer->setConfirmation($customerRequest->getParam('confirm_password'));
        $customer->setPasswordConfirmation($customerRequest->getParam('confirm_password')); // Added this line ***
    }
} else {
    // emulate customer password for quest
    $password = $customer->generatePassword();
    $customer->setPassword($password);
    $customer->setConfirmation($password);
    $customer->setPasswordConfirmation($password); // Added this line ***
    // set NOT LOGGED IN group id explicitly,
    // otherwise copyFieldset('customer_account', 'to_quote') will fill it with default group id value
    $customer->setGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
}

同时使用" setConfirmation"和" setPasswordConfirmation"你应该确保向前和向后的兼容性,而不是弄乱任何东西。