【问题标题】:Symfony2 (version 2.8.13): I am lost on where to place and access my CSS, JS, and Image filesSymfony2(2.8.13 版):我不知道在哪里放置和访问我的 CSS、JS 和图像文件
【发布时间】:2016-11-10 07:51:40
【问题描述】:

我对 Symfony2 非常陌生,并且正在努力将现有 CodeIgniter 站点中当前运行的所有内容重写为 Symfony2 以用于该站点的新 Symfony2 版本。

在远程服务器上安装 Symfony2 版本 2.8.13,标准版后,我已经能够在我电脑的 Chrome 浏览器中成功运行 app.php 和 app_dev.php 页面。我使用“创建你的第一页”说明开始学习 Symfony2,现在我正在逐步应用这些知识开始重写我的旧 CodeIgniter index.php 页面以在我的新 Symfony 站点中运行。

由于旧的 CodeIgniter 站点主要使用 php、css、javascript、jquery,以及一些插件和一些 CodeIgniter 函数来连接到支持的数据库并渲染输出页面,所以我决定不重写视图在树枝上。

相反,我只是使用 Symfony 控制器来容纳 CodeIgniter 控制器的“逻辑”并查看文件。稍后我会将控制器/视图文件分解为多个文件,以创建可重用的组件文件,这些文件最初在 CodeIgniter 站点中使用,但被重写为使用 Symfony2 框架。

说了这么多,下面是我的问题:

1) 我如何“告诉”呈现的网页在哪里可以找到我放在供应商目录下的 javascript (js)、图像、css 和其他文件的第三方插件文件?我没有使用 composer 来执行此操作,因为其中大部分是我刚刚从我的 CodeIgniter 站点复制过来的文件。

2) 我如何“告诉”呈现的网页在哪里可以找到我放在 src/project 目录下的非第三方 main.css 文件?

3) 我如何“告诉”渲染的网页在哪里可以找到我也放在 src/project 目录下的非第三方图像文件?

我知道与供应商产品没有紧密联系的 javascript、图像和 css 文件可以放置在几个不同的位置,其中之一是 app/Resources 目录,但为了清楚起见,尤其是当我'仍在转换 CodeIgniter 站点页面,我宁愿将它们放在 src/ 下的页面特定目录中,至少对我来说,这比将它们全部转储到 Resources 目录中更清晰、更直接。我知道有一个工具可以自动管理这些类型的文件,Assetic,但它不再自动安装在 Symfony2 版本 2.8.x 中,我也不相信这会使我的非供应商文件与它们的相关捆绑包保持紧密联系。

另一个解决方案谈到在 Resources 目录和包之间创建一个符号链接,但我不确定该链接应该指向哪个方向以及它是在哪个目录级别创建的。

有人可以帮助我了解在管理这些资源方面我需要做些什么,而不使用额外的工具和不必要的抽象级别吗?

最后,由于我来自 CodeIgniter,关于 CodeIgniter 函数调用,是否有一份关于如何在 CodeIgniter 中完成各种事情以及在 Symfony2 中应该如何完成相同或相似事情的备忘单?

谢谢

================================================ ========

跟进 Thomas 的回复。

谢谢你,托马斯。

我还没有完全掌握 Symfony 的所有条款。 当你说 MyBundle 时,我在哪里可以找到那个目录?

/var/www/vhosts/symfony2/src/AppBundle/Controller 或 /var/www/vhosts/symfony2/app

只有app目录有Resources子目录还是我放在第一个路径的Controller目录下?

在我使用 app/console 命令之前,我想弄清楚这一点。

另外,由于我没有使用 twig,我还可以使用 {% %} 表示法来指定 html 链接和 img 标签获取文件的位置吗?正如我最初所说,我现在不想将我的html语句转换为twig,html已经完成,结果页面正是我想要的。

再次感谢。

P.S.,我试图在评论中回复,但效果不佳,因为它需要所有换行符和额外的空格。知道必须有一种方法可以在不编辑原始发布的问题的情况下添加到该线程中,但是除了回答我自己的问题之外,我什么也没看到,我绝对做不到。那么有人会这么好心,请告诉我如何将我自己的回复添加到这个线程?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    一个好方法是使用symlinks

    首先,你不应该将文件直接放入供应商目录,因为如果你执行 composer 安装/更新,它可能会被删除,这根本不是一个好习惯。

    使用这些资源在你的 bundle 的 Resources 文件夹中创建一个公共文件夹,或者在 app 文件夹的 Resources 文件夹中创建一个公共文件夹。

    MyBundle/Resources/public
    

    然后把你的资源放到这个文件夹里,比如我放js/jquery.min.js

    然后运行 ​​cmd 并使用以下命令行

    app/console assets:install
    

    带有选项--symlink

    这会将您的所有资产安装到网络文件夹中。

    要访问您的资产,请使用{{ asset('myfolder/js/jquery.min.js' }} 例如,在 Twig 视图中。 希望这会有所帮助。

    您还可以查看有关使用 Assetic 管理资产的官方文档。

    http://symfony.com/doc/current/assetic/asset_management.html

    http://symfony.com/doc/current/best_practices/web-assets.html


    编辑:

    我还没有完全掌握 Symfony 的所有条款。当你说 MyBundle,我在哪里可以找到那个目录?

    当我提到 MyBundle 文件夹时,我假设你已经在你的应用程序中创建了一个包,你应该看看这个页面 (http://symfony.com/doc/current/quick_tour/the_architecture.html),它解释了 symfony 应用程序的基本架构。要生成具有他的基本结构的新包,您可以关注此页面 (http://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_bundle.html)。

    只有app目录有Resources子目录还是我放 在第一个路径的Controller目录下?

    当您使用我给您的链接中描述的步骤为您的应用程序创建一个新包时,您的包文件夹中将有一个资源目录。 (如果你不需要在你的应用中创建一个新的包,你可以使用 symfony 自动创建的 AppBundle 目录)

    另外,由于我没有使用 twig,我还可以使用 {% %} 表示法吗? 指定 html 链接和 img 标签从哪里获取文件?就像我说的 最初,我不想将我的 html 语句转换为 twig 这次,html 已经完成,生成的页面是 正是我想要的。

    Symfony 带有 twig 作为模板引擎,但如果你不想使用它,你也可以。我认为这个链接可以帮助你 (http://symfony.com/doc/current/templating/PHP.html) 你应该知道 {% %} 是一个树枝语法所以我认为如果你不使用树枝你将无法使用它。

    希望这会有所帮助。

    【讨论】:

    • 谢谢你,托马斯。
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2013-08-06
    • 1970-01-01
    • 2019-05-27
    • 2019-03-05
    相关资源
    最近更新 更多