【问题标题】:Where to put core resources in Symfony2?Symfony2 的核心资源放在哪里?
【发布时间】:2011-09-28 22:14:29
【问题描述】:

我开始用 Symfony2 建一个网站,我对资源有点困惑。

Symfony2 书说每个资源文件都必须放在一个 Bundle 中,但是我在每个页面的 base.html.twig 文件中使用的最基本的图像、.js 和 .css 文件呢?

我应该为这些文件制作 CoreBundle 或类似的东西,还是应该将它们放在 app\Resources 文件夹中(或者直接放在 web 文件夹中,也许)? 如果我可以将 app\Resources 文件夹用于这些,我如何从模板中引用这些文件?

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

这里的最佳做法是什么?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    我曾遇到过将所有文件保存在 /web(即 /web/js)中,而在其他情况下我将它们保存在“资产”包中的情况。

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

    与 Symfony2 的许多其他事情一样,您的个人偏好在这些决定中起着重要作用。我建议与您存储资产的位置保持一致。必须在三个不同的位置(Web、AssetsBundle、其他捆绑包)管理拆分的资产可能会让人头疼。所以选择一个位置,并尽量保持一致。

    至于从 app/Resources 访问资产...您可以使用 Assetic 来实现这一点。我对它不是很熟悉,但我相信您可以从项目中的任何地方加载资产。实际上,我建议您查看核心 Assetic 代码(查看 vendor\Assetic)而不是 Symfony2 Assetic 助手,因为您会更好地了解可能的情况。

    【讨论】:

    • 我想我会制作 AssetsBundle 来存储这些资源,它仍然比将它们全部放在 web 文件夹中更易于维护(特别是,如果我想在其他项目中重用这些资产)。感谢您的回答!
    【解决方案2】:

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

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

    【讨论】:

    • 为了完整起见,这可以通过在 Symfony2 项目目录中运行 php app/console assets:install web --symlink 来实现。
    • 我在 Windows 上,所以符号链接不适合我 :) 无论如何,谢谢!
    • @Inori 是的,但你必须以管理员身份打开 CMD ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    相关资源
    最近更新 更多