2015-10-17 6 views
8

सिम्फोनी 2.3 में यह service.yml में इस लाइनsymfony2.7 सेवा कंटेनर में अनुवादक पारित

arguments: [@translator,.... 

serviceFunctions.php

में
public function __construct(Translator $translator,...) { 
    $this->translator = $translator; 

service.yml में अनुवादक के लिए मिल गया था

must be an instance of Symfony\Component\Translation\Translator, instance of Symfony\Component\Translation\DataCollectorTranslator given

:

अब मैं त्रुटि मिलती है

मैं देव में 2.7 में भी सेवा मोड में सेवा कैसे प्राप्त कर सकता हूं?

+4

संभव http://stackoverflow.com/questions/291 का डुप्लिकेट 62346/symfony-loggingtranslator-vs-translator –

+0

नीचे दिए गए कोई भी जवाब सही नहीं है, डुप्लिकेट प्रश्न के लिंक पर जाएं –

+1

डुप्लिकेट प्रश्न लिंक में दिए गए उत्तर के बाद डीबग पर्यावरण होने की वस्तु को हराया जाएगा कभी भी किसी भी सेवा के डीबग संस्करण का उपयोग करने में सक्षम नहीं होगा। एक इंटरफेस गारंटी देगा कि आपके पास सही तरीके से हास्यास्पद होगा। आप महोदय, यह गलत कर रहे हैं। – qooplmao

उत्तर

5

वास्तविक अनुवादक वर्ग की बजाय इंटरफ़ेस का उपयोग करने का प्रयास करें। प्रकार संकेत के रूप में इंटरफेस का उपयोग करके आप इंटरफ़ेस को फिट करने तक कुछ भी उपयोग कर सकते हैं, उदाहरण के लिए आप अपने कोड को बदलने के बिना उत्पादन में नियमित रूप से विकास के साथ विकास में डीबग अनुवादक में पास कर सकते हैं। इस folow को

use Symfony\Component\Translation\TranslatorInterface; 

... 

public function __construct(TranslatorInterface $translator) 
{ 
    $this->translator = $translator; 
} 
9

कोशिश कदम:

कक्षा:

use Symfony\Component\Translation\TranslatorInterface; 

public function __construct(TranslatorInterface $translator) { 
    $this->translator = $translator; 
} 

public function yourFunction(){ 
    $this->translator->trans('key', array(), 'yourDomain'); 
} 

सेवा:

yourService: 
     class: yourClass 
     arguments: [@translator] 
     tags: 
      - { name : kernel.event_listener, event: kernel.request, method: yourFunction } 

मैं अपने कोड में इसके उपयोग और यह काम है;)

संबंधित मुद्दे