我如何从 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');
希望对您有所帮助:)
干杯!
我有一个随机的 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');
希望对您有所帮助:)
干杯!