在Symfony2中放置核心资源的位置?

时间:2011-09-28 22:14:30

标签: php symfony

我开始使用Symfony2构建一个网站,我对资源有点窘迫。

Symfony2 Book说每个资源文件都必须在Bundle中,但是我在每个页面的base.html.twig文件中使用的最重要的图像,.js和.css文件呢?

我应该为这些文件创建一个CoreBundle或类似的东西,还是应该将它们放在app \ Resources文件夹中(或者直接放在web文件夹中)? 如果我可以使用app \ Resources文件夹,我怎样才能从模板中引用这些文件?

为此制作一个Bundle似乎有点不必要,而且我认为这些文件的资产网址也很难看(例如'/bundles/projectcore/images/logo.jpg')。

这里的最佳做法是什么?

2 个答案:

答案 0 :(得分:6)

我的情况是我将所有文件保存在/ web(即/ web / js)和其他我保存在'Assets'包中的文件。

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

与Symfony2的许多其他内容一样,您的个人偏好在这些决策中起着重要作用。我建议保持与您存储资产的位置保持一致。必须管理分为三个不同位置(Web,AssetsBundle,其他捆绑包)的资产可能是一个令人头痛的问题。因此,选择一个位置,并尽量保持一致。

至于从app / Resources访问资产......您可以使用Assetic。我不是很熟悉它,但我相信你可以从项目的任何地方加载资产。我实际上建议您查看核心Assetic代码(查看vendor\Assetic)而不是Symfony2 Assetic帮助程序,因为您可以更好地了解可能的内容。

答案 1 :(得分:2)

我们在Linux中使用了符号链接,以便/ web / bundles / projectcore / images指向src / Bundle / Resources / public / images

使用Netbeans中的Subversion,它确实有效。好处是你的所有应用程序都保留在/ src / Bundle文件夹中