如何在Symfony2外部控制器中找到资源?

时间:2014-06-24 22:38:15

标签: symfony

我知道在Symfony 2中我们可以从控制器使用服务内核来定位资源,如下所示:

$yamlFileKeys   = $this->get('kernel')->locateResource('@CgboardAppBundle/Resources/config/myfile.yml');

我的问题更多是关于我们如何在不在控制器中时找到资源?我之前尝试过相同的事情:

file_get_contents('@CgboardAppBundle/Resources/config/myfile.yml')

资源从未被发现。有什么想法吗?

1 个答案:

答案 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());
    ...
}