首页 > 解决方案 > 从命令行更新 Prestashop 中的产品数量

问题描述

我在 Prestashop 1.7.6 中创建了一个模块,它通过两种方式更新产品库存:

对于我创建的许多其他服务,我使用它可以完美运行,但是对于这个,我使用 Prestashop 中的“新”库存管理,当我使用 \StockAvailable 方法时,它总是调用上下文并触发错误StockManagementRepository 第 130 行:“确定活动语言需要上下文员工实例。” 此错误阻止我的模块在上下文之外更新产品库存。

在我的代码中,我尝试使用以下方法,以最简洁的方式获取和修改库存:

\StockAvailable::getQuantityAvailableByProduct(...)
\StockAvailable::setQuantity(...)
\StockAvailable::updateQuantity(...)

请注意,我强制 $shopId 为 1 以避免尽可能多地获取上下文。

你知道如何在 Prestashop 中以一种干净的方式更新库存(不仅仅是修改库存、产品属性和产品表)从 cron (脱离上下文并且没有员工连接),并且不调用 Prestashop 网络服务?

谢谢你。

标签: prestashopprestashop-1.7

解决方案


最简单的方法是为 cron 指定 FronTController 或 .php 文件并在其中进行更改。

如果是 .php 文件,您应该包含 PrestaShop 配置文件。例如,如果您的文件位于模块文件夹中:modules/mymodulename/cron/stock-update.php

<?php
require_once dirname(__FILE__) . '/../../../config/config.inc.php';
//do the stuff

并且感谢 config.inc.php,您也可以使用 Context 对象

$context = Context::getContext();

您甚至可以通过以下方式在上下文菜单中设置员工

$context = Context::getContext();
$context->employee = new Employee($idEmployee);

推荐阅读