我知道在Symfony 2中我们可以从控制器使用服务内核来定位资源,如下所示:
$yamlFileKeys = $this->get('kernel')->locateResource('@CgboardAppBundle/Resources/config/myfile.yml');
我的问题更多是关于我们如何在不在控制器中时找到资源?我之前尝试过相同的事情:
file_get_contents('@CgboardAppBundle/Resources/config/myfile.yml')
资源从未被发现。有什么想法吗?
答案 0 :(得分:2)
这取决于您要加载的文件。 如果要加载,处理和验证配置文件,有一个非常强大的组件可以执行此操作:
http://symfony.com/doc/current/components/config/introduction.html
如果要加载其他文件类型,还有另一个组件,即Finder组件 http://symfony.com/doc/current/components/finder.html
因此,如果您只想处理.yml文件,可以使用YAML组件和Finder组件 http://symfony.com/doc/current/components/yaml/introduction.html
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Finder\Finder;
$yaml = new Parser();
$finder = new Finder();
$finder->files()->in(__DIR__);
foreach ($finder as $file) {
$values = $yaml->parse($file->getContents());
...
}