Symfony4 - 从控制器访问 sevices.yaml

Symfony4 - accessing sevices.yaml from controller

我正在启动一个 symfony4 项目,我了解到 "parameters.yaml" 现在是 "sevice.yaml"。

我在里面设置了一些变量,比如:

parameters:
    smugmug.oauth_token: 'XXX'
    smugmug.oauth_token_secret: 'XXX'

我尝试从我的控制器访问它,例如:

    dump($this->container->get('smugmug.oauth_token'));

但是我有一个错误...

这种存储全局变量的新方法是如何工作的?

我想你忘记扩展控制器了class

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class ArticleController extends Controller
{
    public function controlAction()
    {
        // ...
        dump($this->container->getParameter('smugmug.oauth_token'));
        // Or this solution
        dump($this->getParameter('smugmug.oauth_token'));
        // ...
        // return a response
    }
}

现在,由于 Controller 已被弃用,您必须使用 AbstractController,因此您还需要为服务参数注入依赖项:

namespace App\Controller;

use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;

class MyStuffController extends  AbstractController  {

    private $params;

    public function __construct(ParameterBagInterface $params)
    {
        $this->params = $params;
    }
}

然后你可以这样得到你的参数:

$this->params->get( "app.your_stuff" );