【发布时间】: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