即将在 Twigs 布局中使用的 Symfony2 服务方法

Symfony2 service method used in Twigs layout to soon

我已经为 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

我认为您必须将此服务注册为 twig 扩展。

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