gpt4 book ai didi

symfony - 从 Shopware 5.6.10->5.7.6 升级后,自定义控制台命令丢失

转载 作者:行者123 更新时间:2023-12-02 18:26:50 25 4
gpt4 key购买 nike

我们将用于测试的 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 |

services.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>

更新我们刚刚禁用了该插件,因为我们并不真正需要它 - 我仍然将其保留给更多读者。

最佳答案

这里提到了最好的方法: https://symfony.com/doc/4.4/console/commands_as_services.html

随着 Shopware 5.7 更新,您的 symfony 版本现已升级到 4.4。因此,您可以将 name 命令名称设置为 protected 静态私有(private)名称。

目前,我正在将 Shopware 项目从 5.6 迁移到 5.7,并且遇到了与您相同的问题。

这适用于我的命令类,删除它:

protected function configure(): void {
$this->setName('namespace:mycommandname');

PS:您可以保留 setDescriptions 或 setHelp 方法。

然后从 symfony 帮助页面添加以下示例:

class SunshineCommand extends Command
{
protected static $defaultName = 'namespace:mycommandname';

编辑:就像@Torben所说,您还可以在services.xml中使用command =“namespace:mycommand”。但对我来说,有必要访问 php 类中的常量。我防止在特殊情况下使用 services.xml。

关于symfony - 从 Shopware 5.6.10->5.7.6 升级后,自定义控制台命令丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70003388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com