Symfony Sylius如何覆盖CoreBundle签出过程
我正在做一个项目,我想寻求一个干净/最好的方法来覆盖项目中的步骤 Sylius\Bundle\CoreBundle\Checkout\CheckoutProcessScenario 我想保留整个过程的自定义机制,只需在末尾添加一个自定义步骤并删除finalize步骤Symfony Sylius如何覆盖CoreBundle签出过程,symfony,overriding,checkout,sylius,Symfony,Overriding,Checkout,Sylius,我正在做一个项目,我想寻求一个干净/最好的方法来覆盖项目中的步骤 Sylius\Bundle\CoreBundle\Checkout\CheckoutProcessScenario 我想保留整个过程的自定义机制,只需在末尾添加一个自定义步骤并删除finalize步骤 $builder ->add('security', 'sylius_checkout_security') ->add('addressing', 'sylius_checkou
$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')
;
这样做的最佳形式是什么?如果它正在扩展捆绑包并覆盖它,我希望得到一些帮助,至少提供一些信息,为我指明正确的方向-目前我自己没有得到任何结果
我已经阅读了捆绑包本身的文档,但它没有解释如何覆盖内置流程
我还阅读了symfony关于扩展资源的食谱:
以及:
如果有人对此有一些经验,并愿意分享他们的见解,我将不胜感激。提前感谢。您可以将服务类别更改为自定义类别。 您可以覆盖参数sylius.checkout\u scenario.class app/config/config.yml:
您的\类
我做的有点不同,但重点仍然很好:)
我所做的是使用服务编译器用我自己的类重写它,并重写原始文件。基本原理如下所述:
在服务和配置部分:)
然后我只需要包含编译器过程
// 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());
}
}
在编译器过程中,我只是扩展了基文件并重写了所需的函数。放下它,以防有人需要指向正确的方向
// 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());
}
}