Symfony 2.3では、翻訳者に到達するのはservice.ymlのこの行でした
Service.ymlで
arguments: [@translator,....
serviceFunctions.phpで
public function __construct(Translator $translator,...) {
$this->translator = $translator;
今、私はエラーを受け取ります:
symfony\Component\Translation\Translatorのインスタンスである必要があり、Symfony\Component\Translation\DataCollectorTranslatorのインスタンスが指定されている必要があります
本番モードでも開発中の2.7でサービスにアクセスするにはどうすればよいですか?
この手順に従ってください:
クラス:
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 }
私はこれを私のコードで使用し、それは機能します;)
実際のトランスレータクラスではなく、インターフェイスを使用してみてください。インターフェイスを型のヒントとして使用することで、インターフェイスに適合する限り何でも使用できます。たとえば、コードを変更することなく、開発中のデバッグトランスレータを本番環境の通常のデバッグトランスレータに渡すことができます。
use Symfony\Component\Translation\TranslatorInterface;
...
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}