我是symfony2的新手,所以如果这是一个愚蠢的问题,请原谅我。
Symfony2是捆绑组织的 - 所以一切都是正确的吗?
基于此,我创建了以下bundle,以便拥有一个简单的登录机制:
所以捆绑包正常工作,一切都很好。
现在我无法找到向网站添加布局/主题结构的最佳方法。
我显然需要一些全局资产,例如header,nav和foooter。但另外,还需要一些全局的css样式表,jquery等。
最明显的地方包是App - 但是如何让所有其他包继承此包中的主题。例如,用户包模板需要扩展App包等。
捆绑包的想法是它们是模块化的和自包含的,因此如何实现
答案 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
。