2011-09-28 51 views
8

我开始用Symfony2构建一个网站,并且我对资源有一点点困惑。在Symfony2中放置核心资源的位置?

Symfony2 Book说每个资源文件都必须位于一个Bundle中,但是我在每个页面的base.html.twig文件中使用的最基本的图像,.js和.css文件又如何?

我应该做一个CoreBundle或类似的东西,只是为了这些文件,或者我应该把它们放在app \ Resources文件夹中(或直接在web文件夹中,也许)? 如果我可以使用这些app \ Resources文件夹,我该如何从模板中引用这些文件?

为我们制作一个Bundle似乎有点不必要,而且我认为这些文件的资源URL也很丑陋(例如'/bundles/projectcore/images/logo.jpg')。

这里最好的做法是什么?

回答

6

我已经将所有文件保存在/ web(即/ web/js)以及其他我将它们放在“资产”包中的其他文件中。

如果您正在开发将在众多项目中重复使用的捆绑包,则将资产存储在该捆绑包中是有意义的。我想你会使用命令行将这些资产发布/安装到Web文件夹中。例如,假设您有一个需要特定CSS的BlogBu​​ndle。你会将该CSS存储在该包中,因此下次为项目使用BlogBu​​ndle时,可以轻松地重新使用该CSS。

与Symfony2的许多其他事情一样,您的个人偏好在这些决策中扮演着重要角色。我建议保持一致,尽管您存储您的资产的位置。不得不管理三个不同地点的资产(网络,AssetsBundle,其他包),这可能会让人头疼。所以选择一个位置,并尽量保持一致。

至于从应用程序/资源中访问资产...您可能可以使用这个资产。我不是很熟悉它,但我相信你可以从项目的任何地方加载资源。我实际上建议看一下核心资产代码(请参阅vendor\Assetic),而不是Symfony2 Assetic助手,因为您可以更好地了解可能的情况。

+0

我想我会让AssetsBundle用于存储这些资源,它仍然可维护,而不是把它们全部放在web文件夹中(尤其是,如果我想在其他项目中重用这些资产)。感谢你的回答! – banrobert

2

我们在Linux中使用的符号链接使/网络/包/ projectcore /图像点在NetBeans的src /包/资源/公/图像

颠覆,它的工作。好的是,你的所有应用程序仍然保留在/ src/Bundle文件夹中

+3

为了完整起见,可以在Symfony2项目目录中运行'php app/console assets:install web --symlink'来实现。 – richsage

+0

我在Windows上,所以符号链接不是我的选择:)无论如何,谢谢! – banrobert

+1

@banrobert符号链接也适用于Windows – Inoryy