我最近决定看看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
)的功能,这让我暂停了当前的方法。我希望有人能够引导我朝着正确的方向前进。
答案 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