很快就会在Twigs布局中使用Symfony2服务方法

时间:2015-01-16 11:38:02

标签: symfony service dependency-injection twig lazy-loading

我有一个为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

1 个答案:

答案 0 :(得分:1)

我认为您必须将此服务注册为树枝扩展名。

查看本手册:http://symfony.com/doc/current/cookbook/templating/twig_extension.html