我正在开展一个项目,我想要一个干净/最好的方法来覆盖
中的步骤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
如果有人对这个主题有一些经验,并希望分享他们的见解,我将非常感激。提前谢谢。
答案 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());
}
}
在编译器传递中,我只是扩展了基本文件并覆盖了我需要的功能。如果有人需要指向正确的方向,请使用它。