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

oo7oh9g9  于 2022-11-16  发布在  PWA
关注(0)|答案(4)|浏览(165)

我们将用于测试的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* 我们只是禁用了插件,因为我们并不真的需要它-我仍然为更多的读者开放。
mi7gmzs6

mi7gmzs61#

最好的办法是这里提到的:https://symfony.com/doc/4.4/console/commands_as_services.html
随着Shopware 5.7的更新,你的symfony版本现在是4.4。所以你有可能设置名称命令名称为受保护的静态私有。
目前我正在将一个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-classes中的常量。我禁止在特殊情况下使用services.xml。

fcipmucu

fcipmucu2#

根据Michael T的评论:
将标记更改为

<tag name="console.command" value="hpr:orders:export"/>

和缓存刷新,控制台中会再次显示该命令。

vs3odd8k

vs3odd8k3#

我也有一些问题,这个插件升级到Shopware 5. 7. x后。
在我的情况下
编译容器时,“hp_order_export_service”服务或别名已被删除或内联.应将其设为公共,或直接停止使用容器并改用依赖项注入.
我在<services>下的 custom/plugins/HPrAutomaticOrderExport/Resources/services.xml 中添加了<defaults public="true"/>
帮助,也许它也会帮助其他人。

fhg3lkii

fhg3lkii4#

@亚历克斯
我在将SW 5.6升级到SW 5.7并因此升级到Symfony 4.4时遇到了同样的问题。
我发现命令突然变得不可见,我需要延迟加载它们,而不是这样做:

<tag name="console.command" />

我现在必须这样做:

<tag name="console.command" command="netcom:migrations:migrate:up" />

我不明白的是,在没有惰性加载的情况下标记它们的“正常”方式也必须是可能的,是吗?或者我总是必须将控制台命令标记为惰性加载?目前我还不清楚...因为我认为文档在这里陈述了这两个选项,并且惰性加载具有性能增益:https://symfony.com/doc/4.4/console/commands_as_services.html

相关问题