【问题标题】:Symfony 2 File Structure for Assets资产的 Symfony 2 文件结构
【发布时间】:2013-02-13 10:27:31
【问题描述】:

我正在 Symfony 2 中创建我的第一个项目,但对于在每种情况下存储我的资产(CSS、JS、图像等)的位置有点困惑。

我开始了解模板系统是如何工作的,您应该在其中创建独立的 Bundle,然后使用 app/Resources 中的站点特定内容覆盖它们。

但是当涉及到资产时,我是否会在 app/Resources 中为站点特定内容创建一个“公共”文件夹?

为什么捆绑包的一些资产保存在 web/bundles 中?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    您必须将 css、图像、js 等放入它们应该属于的包内的文件夹中。 这个文件夹名为public,包含在Resources文件夹中(显然,在里面,你可以为css,js,...划分其他文件夹)。

    完成此操作后,您可以使用 (from C ommand L ine I nterface a.k.a. CLI) 以下命令:

    php app/console assets:install web
    

    这样,您告诉 symfony2(这是默认行为)复制包含在 Resources 文件夹中的所有名为 public 的文件夹,到 web 文件夹中。
    Symfony 将创建(或扩展,如果存在)一个名为 bundles 的文件夹,其中包含您应用程序的所有资产(包括来自供应商的一些资产)。

    请注意

    如果您运行上面的命令,那么您正在制作资源的副本,因此每次更改它们时,您都必须再次启动命令本身。更好的方法是使用符号链接更改上述命令,如下所示

    php app/console assets:install web --symlink
    

    web 文件夹作为目标文件夹的原因是,您的 Web 服务器(apache 或其他相同)应该只访问其中包含的资源,并让 symfony2 重新获取所有资源的任务。

    希望对你有帮助。

    【讨论】:

    • 非常感谢。因此,如果我想覆盖捆绑包中的图像,我会运行控制台命令然后更新 web/ 文件夹中的文件?另外,您会将网站“app/Resources/views/base.html.twig”的主模板的资产放在哪里
    • @TheoKouzelis:“覆盖”是什么意思?你的意思是通过替换文件来改变它?如果是,请遵循我的建议并使用符号链接。这样,您只需更改此图像,所有更改都会反映在您使用该资产的任何地方。第二个问题不清楚,至少对我来说:资产是捆绑概念,而不是模板概念。如果您的意思是“您会在哪里使用它们”,我建议您使用一个主模板,该模板将被整个网站页面扩展
    • 对不起,我觉得我对一些概念有点困惑。我想你已经回答了我关于带有符号链接的捆绑包的问题。但我的另一个问题是,你会将在 app/Resources 中创建的模板的 CSS 放在哪里
    • @TheoKouzelis:好的,我会把它们放在使用它们的包中。如果您有一些捆绑包,我想会有一个 main 捆绑包,不是吗?因此,将它们放入这个“主要”包中,在我的答案中显示的位置
    【解决方案2】:

    试试 Symblog 教程...Symblog

    This 尤其是关于资产的部分

    【讨论】:

    • 我已经略读了本教程,但看不到任何清楚回答我问题的内容
    猜你喜欢
    • 2012-04-13
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多