2017-06-29 115 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

相關問題