适当的开发。覆盖Twig模板的方法

时间:2015-01-07 06:22:38

标签: php symfony sylius

我最近决定看看Sylius,因为我喜欢开发人员友好的Symfony2项目。

我试着查看各种文档文章,但我似乎无法找到一个非常基本的问题的答案:在新网站上开始开发的推荐方法是什么-store,它将包括(至少)实现自己的HTML模板设计的能力,并且仍然能够轻松地将Sylius升级到未来的版本?

我能够提出的最佳方法是创建一个基于默认WebBundle的新包(在我的例子中,名为SyliusWebBundle)。这是问题所在。为了最大限度地允许Sylius使用我的包中的模板,而不是默认的模板,我不得不经历许多箍。以下是我迄今为止所做的几件事:

  • Controller复制原始SyliusWebBundle目录的内容。更改了返回值以使用WebBundle而不是SyliusWebBundle $this->render()的参数中的字符串的一部分,以及类名称空间。
  • Resources/config/routing目录中的YAML文件从SyliusWebBundle复制到我的捆绑包中。更改了YAML文件中的SyliusWebBundle引用,类似于上面的内容。
  • app/config/config.yml添加了新的部分,特别是此部分(旨在覆盖addCheckoutSection()Sylius\Bundle\CoreBundle\DependencyInjection\Configuration的内容):

     sylius_core:
        # ...
        checkout:
            steps:
                security:
                    template: 'WebBundle:Frontend/Checkout/Step:security.html.twig'
                addressing:
                    template: 'WebBundle:Frontend/Checkout/Step:addressing.html.twig'
                shipping:
                    template: 'WebBundle:Frontend/Checkout/Step:shipping.html.twig'
                payment:
                    template: 'WebBundle:Frontend/Checkout/Step:payment.html.twig'
                finalize:
                    template: 'WebBundle:Frontend/Checkout/Step:finalize.html.twig'
    

我在更改Resources/config/routing/frontend目录中YAML文件中的所有默认控制器引用方面做了很多工作,但在继续之前,我需要知道这是否是正确的方法,或者是否我走错了路。

我的目标是使用新版本的Sylius尽可能轻松地升级商店,因此我希望避免修改核心库文件,而是根据需要使用我自己的包选择性地覆盖功能。

然而,除非我错过了什么,否则Sylius目前似乎还没有“适应”这种方法。

根据上述YAML部分,我必须覆盖多个捆绑包(CoreBundle以及WebBundle)的功能,这让我暂停了当前的方法。我希望有人能够引导我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

你可以覆盖app文件夹中的所有模板(这是symfony的一部分,适用于所有捆绑包):

app/Resources/SyliusWebBundle/views/Frontend/Checkout/Step/
   security.html.twig
   addressing.html.twig
   shipping.html.twig
   payment.html.twig
   finalize.html.twig