我发现此错误" Property Order-> id_customer为空" 仅在 时输入并通过硒chromedriver。我正在运行PrestaShop 1.6,当我手动输入相同的订单详细信息时,我没有收到此错误。
我不认为这是实际的硒脚本的问题,但可能与网络驱动程序有关;我认为这可能是由于cookie中缺少数据或者实际上没有选择字段,但是当我从表单提交中检查数据包时,与手动输入相比没有什么遗漏。
我还清空了prestashop缓存,并删除了Chrome中的所有浏览器数据,以防由于缓存数据而导致运气不足。
我确实覆盖了与订单提交相关的多个文件,以满足一些项目要求,特别是PaymentModule,Order,& AdminOrdersController但我不知道如果手动输入正常,这可能是什么问题。我一直在调试,因为我一直在抓住想法,所以如果它实际上是由于我的覆盖,我一直试图调试其中的变量但是仍然遇到问题;我无法实际输出变量,我尝试使用PrestaShop的p()查看PrestaShop日志(Dev_mode打开),回显,var_dumping,并保存到文件但没有数据出来。
我真的可以使用直接的解决方案但我至少需要一些新的想法来进行调试。
编辑:这是被覆盖的文件。
PaymentModules.php:
$order_list = array();
$order_detail_list = array();
do {
//changed from generateReference()
$reference = Order::generateReferenceOrderID($extra_vars[0]);
} while (Order::getByReference($reference)->count());
$this->currentOrderReference = $reference;
Order.php:
Class Order extends OrderCore
{
//needed to abide by project requirements prefix system.
public static function generateReference(){
$id_shop = Context::getContext()->shop->id;
$ref_store = "ABCD";
if($id_shop == 1){
$ref_store = "TCPR";
}
else if ($id_shop == 2){
$ref_store = "LOER";
}
else if ($id_shop == 3){
$ref_store = "TCPW";
}
$AUTO_INCREMENT = Db::getInstance()->getValue("
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'ts'
AND TABLE_NAME = 'orders'");
$last_id = Db::getInstance()->getValue("
SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders");
if($last_id < $AUTO_INCREMENT){
$last_id = $AUTO_INCREMENT - 1;
}
$result = $ref_store . str_pad((int)$last_id + 1, 5, '00000', STR_PAD_LEFT);
return $result;
}
public static function generateReferenceOrderID($order_id){
$ref_store = "SQSP";
$result = $ref_store . str_pad((int)$order_id, 5, '00000', STR_PAD_LEFT);
return $result;
}
}
AdminOrdersController.php:
$employee = new Employee((int)Context::getContext()->cookie->id_employee);
//passing order message into extra_vars for use in PaymentModule
$payment_module->validateOrder(
(int)$cart->id, (int)$id_order_state,
$cart->getOrderTotal(true, Cart::BOTH),
$payment_module->displayName,
$this->l('Manual order -- Employee:').' '.
substr($employee->firstname, 0, 1).'. '.$employee->lastname,
array(Tools::getValue('order_message')), null, false,
$cart->secure_key);