我们将用于测试的Shopware 5系统从5.6.10升级到5.7.6
现在,控制台命令
hpr:orders:export
丢失。
这是从一个市场模块,不再是官方支持-问题是,如果有一个简单的方法来修补它。
旧安装:
php7.2 ./console |grep hpr
hpr
hpr:orders:export Starting the export (as defined in the plugin-config) of the orders. Options are mostly the same as the REST-API options.
升级后:
php7.4 ./console |grep hpr
(no output)
在upgrade guide for 5.7中,它指出Symfony已升级...但没有直接提到有关此方面的重大更改。
namespace HPrAutomaticOrderExport\Components;
use Exception;
use Shopware\Commands\ShopwareCommand;
use Shopware\Components\Plugin\ConfigReader;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class CLICommand extends ShopwareCommand
{
protected function configure()
{
$this->setName('hpr:orders:export');
$this->setDescription('Starting the export (as defined in the plugin-config) of the orders. Options are mostly the same as the REST-API options.');
$this->addOption('states', null, InputOption::VALUE_OPTIONAL, 'coma seperated list of order-states ids to filter output');
$this->addOption('statespayment', null, InputOption::VALUE_OPTIONAL, 'coma seperated list of payment-states ids to filter output');
$this->addOption('range', null, InputOption::VALUE_OPTIONAL, 'date range: startdate,enddate'); //TODO syntax for today - n days would be great!!!!!!
$this->addOption('start', null, InputOption::VALUE_OPTIONAL, 'start index in list of orders (defaukt is 0, beginning of the list)');
$this->addOption('limit', null, InputOption::VALUE_OPTIONAL, 'maximal count of orders to export (default is 100)');
$this->addOption('number', null, InputOption::VALUE_OPTIONAL, 'number of a single order');
$this->addOption('exportall', null, InputOption::VALUE_OPTIONAL, 'export all orders, ignore states');
}
插件已启用:
php7.4 console sw:plugin:list|grep Order
| HPrAutomaticOrderExport | Automatic XML Order-Export Standard
| 3.7.1 | Windeit Software GmbH | Yes | Yes |
服务. xml * 编辑 *
<service id="hp_order_export_command" class="HPrAutomaticOrderExport\Components\CLICommand">
<tag name="console.command" />
<argument type="service" id="shopware.plugin.config_reader"/>
<argument type="service" id="hp_order_export_service"/>
</service>
- UPDATE* 我们只是禁用了插件,因为我们并不真的需要它-我仍然为更多的读者开放。
4条答案
按热度按时间mi7gmzs61#
最好的办法是这里提到的:https://symfony.com/doc/4.4/console/commands_as_services.html
随着Shopware 5.7的更新,你的symfony版本现在是4.4。所以你有可能设置名称命令名称为受保护的静态私有。
目前我正在将一个Shopware项目从5.6迁移到5.7,遇到了和您一样的问题。
这对我的命令类有效,删除这个:
PS:您可以保留setDescriptions或setHelp方法。
然后从symfony帮助页面添加以下示例:
编辑:就像@Torben说的,您也可以在services.xml中使用command=“namespace:mycommand”。但是对我来说,必须访问php-classes中的常量。我禁止在特殊情况下使用services.xml。
fcipmucu2#
根据Michael T的评论:
将标记更改为
和缓存刷新,控制台中会再次显示该命令。
vs3odd8k3#
我也有一些问题,这个插件升级到Shopware 5. 7. x后。
在我的情况下
编译容器时,“hp_order_export_service”服务或别名已被删除或内联.应将其设为公共,或直接停止使用容器并改用依赖项注入.
我在
<services>
下的 custom/plugins/HPrAutomaticOrderExport/Resources/services.xml 中添加了<defaults public="true"/>
行帮助,也许它也会帮助其他人。
fhg3lkii4#
@亚历克斯
我在将SW 5.6升级到SW 5.7并因此升级到Symfony 4.4时遇到了同样的问题。
我发现命令突然变得不可见,我需要延迟加载它们,而不是这样做:
我现在必须这样做:
我不明白的是,在没有惰性加载的情况下标记它们的“正常”方式也必须是可能的,是吗?或者我总是必须将控制台命令标记为惰性加载?目前我还不清楚...因为我认为文档在这里陈述了这两个选项,并且惰性加载具有性能增益:https://symfony.com/doc/4.4/console/commands_as_services.html