Как удалить шаги из checkout в Sylius

#symfony #symfony4 #sylius

#symfony #symfony4 #sylius

Вопрос:

Я использую sylius/sylius 1.3.9 с symfony/framework-bundle 4.2.4. Что касается документа, чтобы удалить состояния из checkout, вы должны заменить всю конфигурацию пакета ядра Sylius.

Я поместил свою конфигурацию в src/Resources/SyliusCoreBundle/config/app/state_machine/sylius_order_checkout.yml :

 winzou_state_machine:
    sylius_order_checkout:
        class: '%sylius.model.order.class%'
        property_path: checkoutState
        graph: sylius_order_checkout
        state_machine_class: '%sylius.state_machine.class%'
        states:
            cart: ~
            addressed: ~
            completed: ~
        transitions:
            address:
                from: [cart, addressed]
                to: addressed
            complete:
                from: [addressed]
                to: completed
        callbacks:
            after:
                sylius_process_cart:
                    on: [address]
                    do: ['@sylius.order_processing.order_processor', process]
                    args: [object]
                sylius_create_order:
                    on: [complete]
                    do: ['@sm.callback.cascade_transition', apply]
                    args: [object, event, create, sylius_order]
                sylius_save_checkout_completion_date:
                    on: [complete]
                    do: [object, completeCheckout]
                    args: [object]
  

После этого я выполняю:

 php bin/console cache:clear -e dev
[...]
php bin/console debug:winzou:state-machine sylius_order_checkout -e dev

 -------------------- 
| Configured States: |
 -------------------- 
| cart               |
| addressed          |
| shipping_selected  |
| shipping_skipped   |
| payment_skipped    |
| payment_selected   |
| completed          |
 -------------------- 
[...]
  

Ничего не изменилось. Когда я перехожу по ссылке в документе, он говорит:

Наследование пакетов было удалено в Symfony 4.0 […]

Итак, возможно ли с Symfony 4.2 заменить весь файл конфигурации пакета, как предложено в документах, или это регрессия в Sylius 1.3 и каким было бы возможное решение, если бы я не сделал ничего плохого?

Ответ №1:

Вы можете попробовать создать state_machine каталог в config/packages , поместить свой файл YAML и добавить эту строку в configureContainer() методе в src / Kernel:

 protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
    {
        ...
        $loader->load($confDir.'/state_machine/*'.self::CONFIG_EXTS, 'glob');
    }
  

Комментарии:

1. Я добавил это в config/ state_machine/state_machine. yml и удалил все обратные вызовы: after: шаги, переходы и состояния, но процесс проверки по-прежнему продолжается, это обычный бизнес. Если я помещаю файл в config/packages / state_machine /, он сообщает мне, что не может его найти, в config/ state_machine / такого сообщения нет, но и эффекта тоже. Есть идеи? Заранее благодарю вас!