好日落,
我只需要从form_theme访问服务,例如myService.myFunction(param1, param2)
,其中myService是保存服务本身的变量。我需要访问的参数是block('form_label')
,它为我提供 for html属性。
我尝试使用Request
方法通过$request->attributes->set()
访问myService。这有效,但不是100%,因为我需要myService中的entityManager,并且它被设置为null。所以我猜这不是正确的方法。
我想尝试使用formExtensions,但是对于许多formTypes(大约10个)我需要这个,并且扩展只能使用一个FormType ...
是否有更好的解决方案可以从我的模板访问服务(使用实体管理器)?
答案 0 :(得分:2)
通过控制器操作传递它:
$service = $this->get('MY_SERVICE');
...
return $this->render(..., ['service' => $service]);
或使用TwigExtension(不带控制器):
private $myService;
public function __construct(MyService $myService)
{
$this->myService = $myService;
}
public function getFunctions()
{
return [
new \Twig_SimpleFunction('my_service', [$this, 'getMyService']);
];
}
public function getMyService()
{
return $this->myService;
}
并在以下模板中全局使用它:
{{ my_service().myDesiredMethod() }}