【发布时间】:2012-04-12 11:15:34
【问题描述】:
在 Symfony1 中,我使用:
sfContext::getInstance()->getController()->...
sfContext::getInstance()->getI18N()->...
如何在 Symfony2 中得到这个?
更新: 在 Symfony2 中这是不可能的!
【问题讨论】:
在 Symfony1 中,我使用:
sfContext::getInstance()->getController()->...
sfContext::getInstance()->getI18N()->...
如何在 Symfony2 中得到这个?
更新: 在 Symfony2 中这是不可能的!
【问题讨论】:
在您的控制器中,您可以执行$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');
【讨论】:
@translator 服务。见here