Prestashop - 客户注册管理模块 - 略有修改

时间:2012-05-08 09:22:16

标签: prestashop

我正在努力修改客户注册管理模块中的一些代码。即时结账不按照预期的方式运作。当客户注册管理模块被禁用时,即时结账工作正常,在提交时没有错误,我们进入下一步/屏幕。启用客户注册模块后,一旦我们点击即时结账时的提交按钮,我们就不会进入下一步/屏幕,而是回到相同的屏幕,表格为空,在网址中我们有:身份验证?返回= order.php%3Fstep%3D1 我设法识别一个代码,阻止客户从Instant checkout表单进入以下屏幕。它是函数hookCreateAccount($ params)

中的代码
    function hookCreateAccount($params)
{
  require_once (dirname(__FILE__).'/ApprovedCustomer.php');
  global $cookie, $back;

  $registration_code = pSQL(Tools::getValue('registration_code'));
  if ($registration_code != '' AND $registration_code == $this->_registrationCode) {
   $customer = $params['newCustomer'];
   $customer->cleanGroups();
   $customer->addGroups ($this->_defaultGroups);

  }

  $cookie->logged = $this->_isCustomerRegistredByDefault;
  $cust = $params['newCustomer'];
  $approval = new ApprovedCustomer($cust->id);
  $approval->is_approved = $this->_isCustomerRegistredByDefault;
  $approval->privilege_request = intval(Tools::getValue('privilege_request'),0);
  $approval->privilege_message = pSQL(Tools::getValue('privilege_message'), '');;
  if (! $approval->save())
   Tools::D('Unable to save approval information');

  if ($this->_sendAdminMail)
   $this->sendMail('pending_registration', array('customer' => $cust, 'approval'=>$approval));
  if (! $approval->is_approved) {
   $back = 'modules/'.basename(__FILE__, '.php').'/messages.php?msg=noconnect&back=my-account.php';
   $cookie->logged = 0;
  $cookie->id_customer = 0;
  }

  elseif ($back == '')
   $back = 'my-account.php';
}

任何人都有任何想法在这段代码中导致了什么?任何帮助都会非常感激。

到底发生了什么:一旦用户填写Instant checkout表单并点击提交,表单就会重定向到同一页面:... /authentication?back = order.php%3Fstep%3D1 但它应该去:/ order?step = 2

即时结帐表单操作:

<form action="{$link->getPageLink('authentication.php', true)}?back={$back}" method="post" id="new_account_form" class="std">

那么,我应该更改动作部分吗?这是如何运作的?有人能指出我正确的方向吗?任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

我怀疑发生冲突是因为根据定义,您的客户没有注册为One Page Checkout功能的一部分(我认为这就是Instant Checkout的意思)。

您可以尝试将第一个代码块重构为:

global $cookie, $back;

$customer = $params['newCustomer'];
if ($customer->is_guest)
  return;

require_once (dirname(__FILE__).'/ApprovedCustomer.php');


$registration_code = pSQL(Tools::getValue('registration_code'));
if ($registration_code != '' AND $registration_code == $this->_registrationCode) {
  $customer->cleanGroups();
  $customer->addGroups ($this->_defaultGroups);
}