2012-05-03 15 views

cevap

25

Kap parametrelerini servisinize aktarabilirsiniz b ™ Bu durumda bütün kabı Geçme

public function __construct($router, $container, $paramValue) 
{ 
    // ... 
} 
+2

Bu konuda daha fazla dokümantasyon var mı? Ayrıca bir hizmet olarak bir Dinleyici var. Config.yml dosyasında Dinleyiciye erişmek istediğim bazı ayarlarım var, bunları argüman olarak mı yapılandırmalıyım? –

+0

Symfony 2.8'den bu argümanı alıntılamak zorunda olduğunuzdan lütfen unutmayın: argümanlar: ["@router", "@service_container", "% your_param_name%"] – Naroh

-1

Çözülmüş:

services: 
    kernel.listener.locale_listener: 
     class: My\BundleName\Listener\LocaleListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 
     arguments: [ @service_container ] 

Dinleyici Sınıfı:

class LocaleListener 
{ 
    protected $container; 

    public function __construct(\Symfony\Component\DependencyInjection\Container $container) 
    { 
     $this->container = $container; 
    } 
.. 

    public function Myfunction() 
    { 
     $languages = $this->container->getParameter('languages'); 
    } 

} 
Biz dinleyici hizmetine bir tartışma

MyBundleName/Kaynaklar/services.yml olarak @service_container kendisini geçmesi gerekiyor

+12

kötü bir fikir olduğunu:

senin hizmetin yapıcı yönteminde 3 argüman (bu örnekte) olarak kendini sunacak
services: kernel.listener.locale_listener: class: My\BundleName\Listener\LocaleListener tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } arguments: [ @router, @service_container, %your_param_name% ] 

: y %your_param_name% gösterimi kullanılarak . –

+0

Nokta alındı, önerdiğiniz için teşekkürler. – Amit

+0

@Elnur - Neden tüm kapsayıcıyı kötü bir fikirden geçiriyorsunuz? –

İlgili konular