2017-06-29 113 views
0

我有一个随机name.yml文件里面让我说我的src/AppBundle/Controller文件夹。该YML文件里面的内容很简单:如何从symfony2中的控制器中的yml文件读取?

name: utkarsh 

我需要从我的控制器访问它,并试图从我的控制文件内

$name = $this->getName('name'); 

来接他们。当我尝试此操作时,我收到以下错误消息:

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

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

回答

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 AUTOMAGIC常数 - __DIR__file_get_contents(__DIR__ . '/name.yml'),或使用它作为一个相对基地的工作。

+0

我用'$ values = Yaml :: parse(file_get_contents('/ src/AppBundle/Controller/Name.yml'));'。但它说'警告:file_get_contents(./ src/AppBundle/Controller/Name.yml):无法打开流:没有这样的文件或目录' – utkarsh2k2

+0

没问题。必须使用完整路径/var/www/html/TestProject/src/AppBundle/Controller/Name.yml – utkarsh2k2

1

不要只把你的YML文件放在Controllers文件夹中。相反,将你的YML文件移动到你的bundle的config目录中。看下面,

AppBundle\Resource\config\abc.yml 

然后,在你的services.yml文件中导入这个文件。见下文,

imports: 
    - { resource: abc.yml } 

而且,请确保您abc.yml文件将有一个这样的结构,

parameters: 
    name: utkarsh 

最后,你可以通过调用类似这样的访问控制器内该参数,

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

我希望这有助于:)

干杯!

+0

我试过你的解决方案。它说'参数“名称”必须定义。 ' – utkarsh2k2

+0

你好,@ utkarsh2k2,请检查你的YML文件。它必须具有与其他任何YML文件相同的结构。您是否将“名称”放在“参数”标题下? –

+0

是的,我做了Anjana – utkarsh2k2

相关问题