如何从symfony2中的config.yml访问“web”文件夹

时间:2012-06-29 09:08:40

标签: symfony

如何从symfony2 app中的config.yml访问“web”文件夹? 我已经尝试了%web%,%base_dir%,%asset_dir%并且遇到了一堵砖墙。

3 个答案:

答案 0 :(得分:15)

config.yml中,您可以使用%kernel.root_dir%/../web

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

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

然后在config.yml中,您将使用%web_dir%

答案 1 :(得分:1)

您可以使用twig的asset()函数访问网络目录中的资源。

<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

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

答案 2 :(得分: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 /。

来自: New in Symfony 3.3: A simpler way to get the project root directory