我有一个随机的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".
这样做的正确方法是什么?
答案 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');
我希望这会有所帮助:)
干杯!