>我有一个实体,例如Game
,具有一些属性,例如time
,并且它下面有Event
个实体。有关游戏的一些信息隐式存储在实体中,例如死亡人数(由死亡事件的数量给出)。
如果我想在模板(有权访问游戏对象)中显示死亡人数,我应该将逻辑放在哪里?
我可以想到一些选择,但我不确定哪个是"正确"的做法。
- 将 getDeaths() 函数放入存储库
中我的印象是它应该去的地方,但我不知道如何从模板正确访问它。 - 在
Game
实体
中放置一个 getDeaths() 函数最简单的事情,因为它很容易从模板访问。 - 在控制器
中创建函数向控制器询问此信息似乎并不灵活
如果要在
游戏实体中隐式存储死亡人数,则只需向实体添加getDeaths()
函数即可。 无论如何,您可能都应该拥有它,而不仅仅是保留一个无论如何都可以修改的公共变量。
如果您必须直接从数据库中查询死亡人数,则需要 Repository 方法,在这种情况下,您可以将其直接传递给模板。
请记住,您可以将任意数量的变量传递给模板,因此它不必只是
return array('game' => $game);
然后在您的模板中:
{{ game.numDeaths }}
您可以轻松地将死亡人数直接传递到模板中,以便轻松访问:
return array('game' => $game, 'numDeaths' => $numDeaths);
然后在您的模板中:
{{ numDeaths }}
希望有帮助。
使用 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) }}