2013-07-10 2 views
0

내에서 번들 (sncRedisBundle는) 내가 성공적으로 사용하여 sncRedisBundle를 설치하고 컨트롤러 내에서의 predis 요소를 사용했다액세스는 확장

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. 

이 범위 지정 문제인가? Extension 내에서 redis에 액세스하려면 어떻게합니까?

감사합니다.

+0

당신은 서비스에 액세스 할 수 없습니다. 모든 load 메소드가 호출되면 서비스에 액세스 할 수 있습니다. –

+0

예, 결국 결론에 도달했습니다. 서버 시작시 물건을 초기화하기 위해 그 지역을 어딘가에서 사용하기를 바랬지 만, 일부 종속성으로 인해 작동하지 않았습니다. 감사합니다. – Adi

답변

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()); 
    } 
+0

좋아요, 이것은 약간의 사실입니다. 그래서 내가 그것을 사용하려고 시도했는지 살펴 봐야 할 것입니다. 나는 당신의 대답을 보았고 그것을 확인할 기회가 있으면 그것을 받아 들일 수있게 될 것입니다. 질문에 답변 할 시간을 보내 주셔서 감사합니다! – Adi

+0

사실, 나는 방금 컨테이너 대신 홍채를 주입했으나 원칙은 동일합니다. – Adi