Php &引用;物业订单->;id“客户为空”;Prestashop 1.6错误
只有在通过Selenium chromedriver输入和提交订单时,才会出现此错误“属性订单->id\u客户为空”。我正在运行PrestaShop 1.6,当我手动输入相同的订单详细信息时,不会出现此错误 我认为这与实际的selenium脚本无关,但可能与webdriver有关;我认为这可能是因为cookie中缺少数据或没有实际选择字段,但当我检查表单提交中的数据包时,与手动输入相比,没有任何内容丢失 我还清空了prestashop缓存,并从chrome中删除了所有浏览器数据,以防这是由于缓存数据造成的,但没有这样的运气 我确实覆盖了与订单提交相关的多个文件,以满足一些项目需求,特别是PaymentModule、order和AdminOrdersController,但我不知道如果手动输入正常,这会是什么问题。我一直在调试,因为我一直在掌握的想法,所以如果它实际上是由于我的覆盖,我一直试图调试其中的变量,但不断遇到问题;我实际上无法输出变量,我试着查看PrestaShop日志(Dev_模式处于启用状态)、回显、var_转储、使用PrestaShop的p()并保存到文件,但没有数据出来 我确实可以使用直接解决方案,但我至少需要一些新的调试思路 编辑:这里是被覆盖的文件 PaymentModules.php:Php &引用;物业订单->;id“客户为空”;Prestashop 1.6错误,php,python,selenium-chromedriver,prestashop-1.6,Php,Python,Selenium Chromedriver,Prestashop 1.6,只有在通过Selenium chromedriver输入和提交订单时,才会出现此错误“属性订单->id\u客户为空”。我正在运行PrestaShop 1.6,当我手动输入相同的订单详细信息时,不会出现此错误 我认为这与实际的selenium脚本无关,但可能与webdriver有关;我认为这可能是因为cookie中缺少数据或没有实际选择字段,但当我检查表单提交中的数据包时,与手动输入相比,没有任何内容丢失 我还清空了prestashop缓存,并从chrome中删除了所有浏览器数据,以防这是由于缓存
$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;
}
}
在提交订单时发布覆盖的相关代码。此外,为了在这些情况下进行调试,我使用了类似于file\u put\u contents('filelog.log',print\r($var\u to\u debug,true)。PHP\u EOL,file\u APPEND)的东西;覆盖已发布。我将尝试您的调试方法。
$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);