如何使用getOrderShippingCost()返回运输步骤的错误

时间:2014-05-10 14:23:46

标签: prestashop prestashop-1.5

我正在研究运营商模块。从远程服务器动态提取交付价格。 之后,使用modulename.php中的getOrderShippingCost()方法将价格包含在订单详细信息中。 因此,当客户设置正确的地址时,一切正常,价格计算得当。 但是,如果任何地址字段中存在错误,例如找不到zipcode,则价格仅设置为0.

而不是0我想插入关于哪个字段错误并阻止载体的注释,但不要隐藏它。

我可以从远程服务器的响应中识别出哪个字段有问题,但是如何在订单处理的发货步骤中显示此信息? 目前,如果出现错误,我会使用return false。所以载体没有显示出来。

这是我现在使用的基本代码方案:

public function getOrderShippingCost($params)
{
  ...
  if (no errors found)
    return $ret['total'];
  else
    return false;
    // instead of return false I would need something like
    // Tools::displayError('Error text'), or trigger a JS event
}

PS 1.5.4.1

1 个答案:

答案 0 :(得分:1)

如果其他人需要这个,我的设法就是如何显示警告信息:

public function getOrderShippingCost($params)
{
  ...
  //error is defined as public variable
  $this->carrierError = $ret['errormsg'];
  if (no errors found)
    return $ret['total'];
  else
    return false;
  // when false is returned, carrier is not displayed, but warning message is displayed using hookDisplayHeader
}

public function hookDisplayHeader($params)
{
  if (isset($this->carrierError) &&
  Tools::getValue('controller') == 'order' &&
  Tools::getValue('step') == '2')
  {
     //running JS do display a warning message that carrier may be available if you fix the wrong field
     ...
  }
}