Symfony从controller中设置了services.yml参数

时间:2017-05-29 07:20:59

标签: symfony

有没有办法可以从控制器设置令牌参数?

app.oauth_subscriber:
    class: GuzzleHttp\Subscriber\Oauth\Oauth1
    arguments:
        - consumer_key: 'test'
          private_key_file: '../app/config/test.pem'
          private_key_passphrase: null
          signature_method: !php/const:GuzzleHttp\Subscriber\Oauth\Oauth1::SIGNATURE_METHOD_RSA
          token: "@=service('security.token_storage').getToken().getUser().getToken().getAccessToken()"

我可以得到这样的服务:

$this->container->get('app.oauth_subscriber');

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以使用服务工厂来执行此操作但是如果您不需要令牌作为__construct,则可以将其从服务参数中删除并在服务中声明新方法,如setToken()和控制器用它来设置令牌。

// Service
private $token;

public function setToken($token){
    $this->token = $token;
}

并在您的服务中使用$this->token以便使用它。

 // Controller
$myService = $this->container->get('app.oauth_subscriber');
$myService->setToken('token');

这只是一个答案。任何更好的解决方案都可以存在。