2014-10-15 5 views
1

Я разрабатываю платежный модуль для Prestashop 1.5. Поскольку состояние заказа не связано с оплатой, я решил создать его во время процесса установки.Создание и удаление OrderState

Я использовал 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); 
     } 
    } 
} 

Однако, при установке модуля и пойти проверить в списке состояний заказов я обнаружил, что вставили четыре пустых состояния (идентификаторы 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; Я хочу знать

  • Что означает 10 в array_fill? Я думаю, что это связано с количеством установленных языков, но не смог подтвердить это.
  • Есть ли способ получить orderState без прямого запроса базы данных, такой как функция getOrderState?

Спасибо в продвижении.

ответ

0

1º - Вы должны пройти параметром order_state_id.

2º - Чтобы получить доступ к методу, вы должны использовать так:

$obj->method 

вместо

$obj.method 

Следуйте моему примеру:

public function deleteOrderState($id_order_state) { 

    $orderState = new OrderState($id_order_state);   
    $orderState->delete(); 

} 

Затем, чтобы удалить OrderState, сначала вам нужно знать его идентификатор.

Позже, просто сделать это:

$yourObj->deleteOrderState(59); 
Смежные вопросы