我有一个实体,例如Game
,有一些属性,例如time
,并且它下面有一些Event
个实体。关于游戏的一些信息隐含地存储在实体中,例如,死亡人数(由死亡事件数量给出)。
如果我想在模板中显示死亡人数(可以访问游戏对象),我在哪里放逻辑?
我可以想到几个选项,但我不确定哪个是正确的'要做的事。
Game
实体中添加getDeaths()函数
最容易做的事情,因为它可以从模板中轻松访问。答案 0 :(得分:1)
如果您在游戏实体中隐式存储死亡人数,则只需向实体添加getDeaths()
函数即可。你应该在那里拥有它,而不仅仅是保留一个可以修改的公共变量。
如果您必须直接从数据库中查询死亡人数,则需要存储库方法,在这种情况下,您可以直接将其传递给模板。
请注意,您可以将任意数量的变量传递到模板,因此不必只是
return array('game' => $game);
然后在你的模板中:
{{ game.numDeaths }}
您可以直接将死亡人数直接传递给您的模板,以便轻松访问:
return array('game' => $game, 'numDeaths' => $numDeaths);
然后在你的模板中:
{{ numDeaths }}
希望有所帮助。
答案 1 :(得分:1)
使用twig自定义扩展/功能:
public function getFunctions()
{
return [
new \Twig_SimpleFunction('number_of_death', [$this, 'getNumberOfDeath'])
]
}
public function getNumberOfDeath(Entity $entity)
{
// logic
return $return;
}
用法:
{{ number_of_death(entity) }}