如何从Symfony2中的库中获取controller / i18n对象?

时间:2012-04-12 11:15:35

标签: php symfony1 symfony

Symfony1 中,我使用以下方法执行此操作:

sfContext::getInstance()->getController()->...
sfContext::getInstance()->getI18N()->...

如何在 Symfony2 中获取此内容?

更新: 在Symfony2中,这是不可能的!

1 个答案:

答案 0 :(得分:1)

在您的控制器中,您可以执行$this->get('translator')。更多信息here。虽然不了解控制器部分。

编辑:

示例服务实现将是,

在你的班级

namespace Your\Class\Namespace;
use Symfony\Component\Translation\TranslatorInterFace;
use Symfony\Component\HttpFoundation\Request;


class YourClass
{

    private $translator;
    private $request;

    public function __construct(TranslatorInterFace $translator, Request $request)
    {
        $this->translator = $translator;
        $this->request = $request;
    }

    public function aMethod(){
        $translator->trans('key');
        $session = $this->request->getSession();
    }
    //.....
}

services.yml

中添加以下行
 my_service:
  scope: request
  class: FQCN\Of\YourClass
  arguments: [@translator, @request]

然后您的控制器可以使用

访问该课程
$this->get('my_service');