我如何从 symfony2 的控制器中读取 yml 文件?

How do I read from a yml file in a controller in symfony2?

我有一个随机的 name.yml 文件,假设是我的 src/AppBundle/Controller 文件夹。 YML文件里面的内容很简单:

name: utkarsh

我需要从我的控制器访问它,并尝试使用

获取它们
$name = $this->getName('name');

来自我的控制器文件。当我尝试这样做时,我收到此错误消息:

Attempted to call an undefined method named "getName" of class "AppBundle\Controller\DefaultController".

正确的做法是什么?

如果它只是一个通用文件,并且最好不要成为框架配置的一部分(例如,在 parameters.yml 文件中),您可以 parse/read 该文件使用Yaml component,已被 Symfony 框架使用。

use Symfony\Component\Yaml\Yaml;

$values = Yaml::parse(file_get_contents('/path/to/name.yml'));
echo $values['name'];

如果您正在加载的文件与 运行 它的代码位于同一目录中,您可以使用 PHP Automagic 常量 - __DIR__file_get_contents(__DIR__ . '/name.yml'),或将其用作工作的相对基础。

不要只将 YML 文件放在 Controllers 文件夹中。相反,将您的 YML 文件移动到捆绑包的配置目录中。见下文,

AppBundle\Resource\config\abc.yml

然后,将此文件导入您的 services.yml 文件。见下文,

imports:
    - { resource: abc.yml }

并且,请确保您的 abc.yml 文件具有这样的结构,

parameters:
  name: utkarsh

最后,你可以通过这样调用在Controller中访问这个参数,

$this->container->getParameter('name');

希望对您有所帮助:)

干杯!