Symfony2模板/布局

时间:2013-02-08 17:18:52

标签: symfony

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

Symfony2是捆绑组织的 - 所以一切都是正确的吗?

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

  • 应用
    • 主要包将包含所有全局功能
  • 用户
    • 将用于表示用户

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

现在我无法找到向网站添加布局/主题结构的最佳方法。

我显然需要一些全局资产,例如header,nav和foooter。但另外,还需要一些全局的css样式表,jquery等。

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

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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

(当然,任何名称,除了" .html.twig" Twig的扩展名,都可以根据自己的喜好进行更改)

答案 2 :(得分: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