Я разрабатываю платежный модуль для Prestashop 1.5. Так как нет состояния заказа, связанного с оплатой, я решил создать его во время процесса установки.
я использовал этот тема с официального форума, которая предлагает использовать эту
$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) и тот, который я намеревался создать (идентификатор 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; я хочу знать
Заранее спасибо.
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);
Других решений пока нет …