1

我是 symfony2 的新手,所以如果这是一个愚蠢的问题,请原谅我。

Symfony2 以捆绑的形式组织——所以一切都是捆绑的,对吧?

基于此,我创建了以下捆绑包,以便拥有一个简单的登录机制:

  • 应用程序
    • 主包将包含所有全局功能
  • 用户
    • 将用于代表用户

所以捆绑包工作正常,一切都很好。

现在我想不出向网站添加布局/主题结构的最佳方法。

我显然需要一些全局资源,例如页眉、导航和页脚。但除此之外,还需要一些全局 css 样式表、jquery 等。

最明显的地方包是应用程序 - 但我如何让所有其他包继承这个包的主题。例如,用户包模板需要扩展 App 包等。

捆绑包的想法是它们是模块化和自包含的,因此如何实现

4

3 回答 3

1

我个人是这样使用的:

有 MainBundle(在你的情况下是 App),它提供全局服务、树枝扩展和布局。全局资产包含在此文件中。

所有其他包的主布局扩展了 MainBundle 的布局。每个捆绑包中的模板都扩展到它的主布局,从而扩展了 MainBundle 的布局。例如,

- MainBundle
    - views
         - layout.html.twig
- UserBundle
    - views
         - layout.html.twig (extends to MainBundle/layout)
         - show.html.twig (extends to UserBundle/layout)
         - friends.html.twig (extends to UserBundle/layout)
于 2013-02-08T17:34:10.507 回答
1

一切都在官方文档中解释: http: //symfony.com/doc/current/templating.html

基本的全局视图(模板)资源放置在以下目录中:

app/Resources/views/index.html.twig

如果您有特定目的或捆绑、模板,请将它们放在子目录中,例如:

app/Resources/views/blog/index.html.twig

如果您想将所有内容保留在捆绑包中(对于可重用代码必须),请使用以下约定:

[VendorName/]YourBundle/Resources/views/Blog/index.html.twig

(当然,除 Twig 的“.html.twig”扩展名外,任何名称都可以更改为您喜欢的名称)

于 2017-02-22T12:20:06.830 回答
0

我更喜欢的策略是将我的应用程序组织在一个包中。如果您不打算在多个应用程序中重复使用不同的独立功能,那么这是最合适的方式。在您自己的应用程序命名空间中拥有“UserBundle”可能没有意义。您添加了许多对您没有任何好处的额外结构。考虑一下:

- MainBundle
    - Controller
        - UserController
        - OtherController
    - Resources
        - views
            - layout.html.twig
            - User
                - show.html.twig
                - update.html.twig
                - friends.html.twig
            - Other
                - some_other_view.html.twig

在这种情况下,控制器目录下的模板将扩展MainBundle::layout.html.twig.

于 2013-02-08T18:46:34.620 回答