0

我已经成功安装了 sncRedisBundle 并在控制器中使用了它的 predis 元素,使用:

$this->container->get('snc_redis.default');

我想在扩展中做同样的事情:

class MyExtension extends Extension
{
    /**
     * {@inheritDoc}
    */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);
        $redis = $container->get('snc_redis.default');
    }
}

但我得到:

The service definition "snc_redis.default" does not exist.

这是范围界定问题吗?如何从扩展中访问 redis?

谢谢!

4

1 回答 1

0
services:
    site:
        class: Emlaktown\AppBundle\Site\Site
        arguments: [%api_url%, "@request_stack", "@service_container"]

……

use Symfony\Component\DependencyInjection\Container;

……

public function __construct($apiUrl, RequestStack $requestStack, Container $container)
    {
        $this->client = new Client($apiUrl);
        $this->redis = $container->get('snc_redis.cache');
        $request = $requestStack->getCurrentRequest();
        $this->client->setDefaultOption('Accept-Language', $request->getLocale());
    }
于 2015-02-13T14:17:11.740 回答