2012-05-08 31 views
0

我正在努力修改客户注册管理模块中的一些代码。即时结账不是应有的方式。当客户注册管理模块被禁用时,即时结账工作正常,在提交时无误,我们进入下一步/屏幕。当客户注册模块启用后,一旦我们点击了即时结账下的提交按钮,我们就不会进入下一步/屏幕,而是返回到相同的屏幕,表单为空,在url中我们有这个:认证? = order.php%3Fstep%3D1 我设法识别一段代码,该代码阻止客户从即时结账表单转到以下屏幕。它在功能hookCreateAccount代码($ params)方法Prestashop - 客户注册管理模块 - 轻微修改

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'; 
} 

任何人有任何想法,在此代码是什么原因造成的?任何帮助将非常感激。

究竟发生了什么:一旦用户填写即时结帐表单并点击提交,表单将被重定向到同一页面:... /authentication?back=order.php%3Fstep%3D1 但它应该去到:/?顺序步骤= 2

即时结帐表单动作:

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

所以,我应该改变作用部呢?这个怎么用?有人能指引我走向正确的方向吗?任何帮助将非常感激。

回答

0

我怀疑发生了冲突,因为根据定义,您的客户没有注册为单页签出功能的一部分(我认为这是您即时签出的意思)。

你可以尝试重构的一个代码块为:

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); 
} 
+0

非常感谢您的帮助保罗!这给了我一个开始。 – Petra