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

时间:2017-06-29 11:05:03

标签: php symfony-2.8

我有一个随机的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".

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果它只是一个通用文件,并且不能更好地成为框架配置的一部分(例如,在parameters.yml文件中),您可以使用Yaml component解析/读取文件,已经被Symfony框架使用了。

use Symfony\Component\Yaml\Yaml;

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

如果要加载的文件与运行它的代码位于同一目录中,则可以使用PHP自动常量 - __DIR__file_get_contents(__DIR__ . '/name.yml'),或将其用作相对基数来自。

答案 1 :(得分:1)

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

AppBundle\Resource\config\abc.yml

然后,在services.yml文件中导入此文件。见下文,

imports:
    - { resource: abc.yml }

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

parameters:
  name: utkarsh

最后,你可以通过这样调用

来访问Controller中的这个参数
$this->container->getParameter('name');

我希望这会有所帮助:)

干杯!