【问题标题】:OrderState creation and deletionOrderState 创建和删除
【发布时间】:2014-10-15 15:55:06
【问题描述】:

我正在为 Prestashop 1.5 开发一个支付模块。由于没有与付款相关的订单状态,我决定在安装过程中创建一个。

我用的是官方论坛的this话题,建议用这个

$OrderState = new OrderState();
            $OrderState->name = array_fill(0,10,"Saman Bank Payment accepted");
            $OrderState->template = array_fill(0,10,"SB24");
            $OrderState->send_email = 1;
            $OrderState->invoice = 1;
            $OrderState->color = "#f8dbec";
            $OrderState->unremovable = false;
            $OrderState->logable = 0;
            $OrderState->add();

所以现在 createOrderState 看起来像这样

private function createOrderState($db_name, $name)
{
    if (!Configuration::get($db_name))//if status does not exist
    {
        $orderState = new OrderState();
        $orderState->name =  array_fill(0,10,$name);
        $orderState->send_email = false;
        $orderState->color = 'royalblue';
        $orderState->hidden = false;
        $orderState->delivery = false;
        $orderState->logable = false;
        $orderState->invoice = false;
        if ($orderState->add())//save new order status
        {
            Configuration::updateValue($db_name, (int)$orderState->id);
        }
    }
}

但是,当我安装模块并查看订单状态列表时,我发现插入了四个空状态(id 14、15、16 和 17)和我打算创建的一个(id 18)。

反之,卸载函数中包含deleteOrderState函数,是这样的

public function deleteOrderState($db_name, $name)
{
    $orderState = new OrderState();
        $orderState->name =  array_fill(0,10,$name);
        $orderState->send_email = false;
        $orderState->color = 'royalblue';
        $orderState->hidden = false;
        $orderState->delivery = false;
        $orderState->logable = false;
        $orderState->invoice = false;

    $order_state.delete();
}

但是,当我尝试卸载模块时,我收到以下错误消息

Fatal error: Call to undefined function delete() in D:\xampp\htdocs\prestashop\modules\example\example.php on line 114
[PrestaShop] Fatal error in module example:
Call to undefined function delete()

TL,DR;我想知道

  • array_fill 中的 10 代表什么?我最好的猜测是它与安装的语言数量有关,但无法确认。
  • 有没有什么方法可以在不显式查询数据库的情况下检索 orderState,例如 getOrderState 函数?

提前致谢。

【问题讨论】:

    标签: php module prestashop payment prestashop-1.5


    【解决方案1】:

    1º - 您必须通过参数传递order_state_id

    2º - 要访问一个方法,你必须像这样使用:

    $obj->method
    

    而不是

    $obj.method
    

    按照我的例子:

    public function deleteOrderState($id_order_state) {
    
        $orderState = new OrderState($id_order_state);        
        $orderState->delete();
    
    }
    

    那么,要删除OrderState,首先你需要知道它的ID。

    稍后,只需这样做:

    $yourObj->deleteOrderState(59);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多