我有一个为Twig注册的服务,我在我的主layout.twig.html
中使用它的方法来列出一些东西。
接下来,在某些操作中,我使用相同的服务来更改其状态(在那里更改一些私有字段),我希望在我的呈现页面中看到这些更改。但是,当我的数据尚未由控制器的操作管理时,看起来Twig会很快调用“getter”方法。
此类案件的最佳做法是什么?我应该以某种方式使用一些事件并使我的服务类型的事件监听器?
布局代码示例:
<div>{{ myservice.mymethod() }}</div>
服务:
class MyService {
private $myfield = null;
....
public function setMyField($value) {
$this->myfield = $value;
}
public function myMethod() {
if($this->myfield === null) {
return 'not initialized';
} else {
$this->myfield;
}
}
....
某些控制器操作:
$myservice = $this->container->get('myservice');
$myservice->setMyField('setted in action');
我总是在呈现的页面上获得not initialized
答案 0 :(得分:1)
我认为您必须将此服务注册为树枝扩展名。
查看本手册:http://symfony.com/doc/current/cookbook/templating/twig_extension.html。