我最近决定看看Sylius,因为我喜欢开发人员友好的Symfony2项目的想法。
我试图浏览各种文档文章,但我似乎无法找到我遇到的一个非常基本问题的答案:在新网上商店开始开发的推荐方法是什么,其中将包括(至少)实现自己的 HTML 模板设计的能力, 并且仍然能够轻松地将Sylius升级到未来版本?
我能够想到的最佳方法是创建一个基于默认SyliusWebBundle
的新捆绑包(在我的情况下名为 WebBundle
)。问题来了。为了获得最低限度的允许Sylius使用我的捆绑包中的模板,而不是默认的模板,我不得不经历许多箍。以下是我到目前为止所做的几件事:
- 已从
SyliusWebBundle
复制原始Controller
目录的内容。更改了返回值以使用WebBundle
而不是SyliusWebBundle
参数中字符串的一部分来$this->render()
,以及类命名空间。 - 已将
Resources/config/routing
目录中的 YAML 文件从SyliusWebBundle
复制到我的捆绑包。更改了 YAML 文件中SyliusWebBundle
引用,类似于上述内容。 在
app/config/config.yml
中添加了新的部分,特别是这部分(旨在覆盖Sylius'Bundle'CoreBundle'DependencyInjection'Configuration
中addCheckoutSection()
的内容):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'
在更改目录中 YAML 文件中的所有默认控制器引用Resources/config/routing/frontend
我还有很多工作要做,但在继续之前,我需要知道这是否是正确的方法,或者我是否走错了路。
我的目标是使用新版本的 Sylius 使商店尽可能容易升级,因此我希望避免修改核心库文件,而是根据需要使用我自己的捆绑包有选择地覆盖功能。
然而,Sylius目前似乎还没有"适应"这种方法,除非我错过了什么。
事实上,我必须覆盖来自多个捆绑包的功能(CoreBundle
以及WebBundle
,根据上面的 YAML 部分),让我暂停了当前的方法。我希望有人能够引导我朝着正确的方向前进。
你可以覆盖应用程序文件夹中的所有模板(这是Symfony的一部分,适用于所有捆绑包):
app/Resources/SyliusWebBundle/views/Frontend/Checkout/Step/
security.html.twig
addressing.html.twig
shipping.html.twig
payment.html.twig
finalize.html.twig