4

如何从 symfony2 应用程序中的 config.yml 访问“web”文件夹?我已经尝试过 %web%、%base_dir%、%asset_dir% 并且遇到了砖墙。

4

3 回答 3

13

config.yml你可以使用%kernel.root_dir%/../web.

如果您想要一个方便的快捷方式,parameters.ini您可以定义如下内容:

web_dir = %kernel.root_dir%/../web

然后在config.yml你将使用%web_dir%.

于 2012-07-02T10:38:13.920 回答
1

您可以使用 twig 的 assets() 函数访问您的 Web 目录中的资源。

<script src="{{ asset('bundles/yourbundle/js/jquery-1.7.2.min.js') }}" type="text/javascript"></script>

有关更多详细信息,请参阅http://symfony.com/doc/current/book/templating.html#linking-to-assets

我想你会想要避免在你的配置/参数文件中设置本地路径,尽量让一切保持动态。

于 2012-06-29T09:58:22.730 回答
0

在 Symfony 3.3 中,我们引入了许多更改和简化,为将于 2017 年 11 月发布的迷人的 Symfony 4.0 版本做好准备。

其中一些更改在技术上很小,但会对您的应用程序产生深远的影响。在 Symfony 应用程序中,众所周知的 Kernel 类的 getRootDir() 方法及其对应的 kernel.root_dir 参数具有误导性。

它们返回存储应用程序内核(通常是 AppKernel.php)的路径。在 Symfony 2 和 3 中,这通常是 app/ 目录,所以通常使用 %kernel.root_dir%/../var/ 或 %kernel.root_dir%/../web/ 之类的表达式。在 Symfony 4 中,内核类已被移至 src/ 目录,因此前面的表达式不会中断。

然而,鉴于大多数时候 getRootDir() 用于获取项目根目录,在 Symfony 3.3 中,我们决定向 Kernel 类添加一个名为 getProjectDir() 的新方法,它会为您提供准确的结果。

这种新方法通过查找包含 composer.json 文件的第一个目录来查找项目根目录,该目录从存储内核的目录开始,一直到找到 composer.json 为止。

实际上,这意味着您的应用程序可以简化大多数或所有使用 %kernel.root_dir% 的表达式。例如:使用 %kernel.project_dir%/web/ 而不是 %kernel.root_dir%/../web/。

来自: Symfony 3.3 中的新功能:获取项目根目录的更简单方法

于 2018-01-17T08:10:58.293 回答