我在 Twig 模板中有一些变量,所以考虑使用全局范围。
config.yml
twig:
globals:
varA: "@wf.autoload.getA"
varB: "@wf.autoload.getB"
在 服务 yml 我有:
services.yml
wf.autoload:
class: Scope\WfBundle\WfAutoloadService
arguments: ["@doctrine.orm.entity_manager"]
WfAutoloadService 类具有获取变量的公共(public)函数
class WfAutloadService {
...
public function getA(){
return ...;
}
public function getB(){
return ...
}
...
}
我的想法行不通。
@=service(wf.autoload).getA()
的方法也不起作用。是否可以?还是坏主意和坏做法?
谢谢
最佳答案
如果 getA() 和 getB() 返回对象,则可以在配置服务时使用工厂:
services:
wf.autoload:
class: Scope\WfBundle\WfAutoloadService
arguments: ["@doctrine.orm.entity_manager"]
wf.autoload.getA:
class: A
factory: ["@wf.autoload", getA]
并设置全局 Twig :
twig:
globals:
varA: "@wf.autoload.getA"
关于php - 如何从 Symfony 配置中的服务容器调用方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38590870/