Symfony2如何在控制器中将parameters.yml用作变量

时间:2014-12-09 11:23:48

标签: php symfony

我正在使用Symfony2项目。

我正在尝试使用在arguments.yml中删除的一些数据,并在我的一个控制器中使用这些数据。

我在Symfony2文档中阅读了getParameters(),但它不起作用。

在我的parameters.yml中,我做到了这一点:

sitemap_root_url: http:/example.co.uk/news/

在我的控制器中,我正在尝试这个:

$this->test = $this->container->getParameters('sitemap_root_url');

这是我得到的错误:

Notice: Undefined property $container

4 个答案:

答案 0 :(得分:2)

尝试$this->container->getParameter('sitemap_root_url');

它适用于我,我使用Symfony 2.5。

如果您想在控制器中使用容器,可以扩展

  

的Symfony \捆绑\ FrameworkBundle \控制器\控制器   (Symfony基本控制器)。

// src/AppBundle/Controller/HelloController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class HelloController extends Controller
{
    // ...
}

然后你就可以获得你的财产了。 适用于我的示例控制器:

namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Response

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class HelloController extends Controller
{
    public function indexAction()
    {
            return new Response(
                    $this->container->getParameter('sitemap_root_url');
            );
    }
}

答案 1 :(得分:2)

显然$container未在您的控制器中声明,如果您想要访问控制器,您可以扩展Symfony\Bundle\FrameworkBundle\Controller\Controller然后使用$this->container->getParameter('sitemap_root_url')

否则,您必须将控制器声明为服务并注入容器。

答案 2 :(得分:1)

嘿,我必须回答(我想编辑第一个答案)但你的getParameters()中有一个不必要的 s ,这就是我猜的所有问题;)

答案 3 :(得分:0)

for symfony 2.6

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

以上symfony 2.6

$this->getParameter('api_key');