Sylius如何覆盖CoreBundle Checkout流程

时间:2014-12-16 10:47:25

标签: symfony override checkout sylius

我正在开展一个项目,我想要一个干净/最好的方法来覆盖

中的步骤

Sylius \ Bundle \ CoreBundle \ Checkout \ CheckoutProcessScenario

我想保留整个过程的自定义机制,只需在最后添加自定义步骤并删除最终步骤。

    $builder
        ->add('security', 'sylius_checkout_security')
        ->add('addressing', 'sylius_checkout_addressing')
        ->add('shipping', 'sylius_checkout_shipping')
        ->add('finalize', 'sylius_checkout_finalize')
        ->add('payment', 'sylius_checkout_payment')
        ->add('purchase', 'sylius_checkout_purchase')
    ;

这样做的最佳方式是什么?如果它正在扩展捆绑并覆盖它,我希望至少有一些信息可以帮助我指出正确的方向 - 目前我没有得到任何结果。< / p>

我已经阅读了捆绑包本身的文档,但它没有解释如何覆盖内置过程。

我还阅读了有关扩展资源的symfony食谱: http://symfony.com/doc/2.0/cookbook/bundles/inheritance.html#overriding-resources-templates-routing-translations-validation-etc

http://symfony.com/doc/current/cookbook/bundles/override.html

如果有人对这个主题有一些经验,并希望分享他们的见解,我将非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将服务类更改为自定义服务类。 您可以覆盖参数sylius.checkout_scenario.class

<强> 应用程序/配置/ config.yml:

<parameter key="sylius.checkout_scenario.class">
    Your\Class
</parameter>

答案 1 :(得分:0)

我做得有点不同但仍然重点:)

我所做的是使用服务编译器用我自己的类覆盖它并覆盖原始文件。这里解释了基础知识:

http://symfony.com/doc/current/cookbook/bundles/override.html

在服务&amp;配置部分:)

然后我只需要包含编译器传递

// src/Acme/ShopBundle/AcmeShopBundle.php
namespace Acme\ShopBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;

use Acme\ShopBundle\DependencyInjection\Compiler\CustomCompilerPass;

class AcmeMailerBundle extends Bundle
{
    public function build(ContainerBuilder $container)
    {
        parent::build($container);

        $container->addCompilerPass(new CustomCompilerPass());
    }
}

在编译器传递中,我只是扩展了基本文件并覆盖了我需要的功能。如果有人需要指向正确的方向,请使用它。