У меня есть сущность, такая как Game
с некоторыми свойствами, такими как time
и имеет нагрузку Event
сущности под ним. Некоторая информация об игре неявно хранится в сущностях, например, количество смертей (определяется числом смертельных случаев).
Если я хочу отобразить количество смертей в шаблоне (у которого есть доступ к игровому объекту), куда мне поместить логику?
Я могу придумать несколько вариантов, но я не уверен, что делать «правильно».
Game
юридическое лицоЕсли вы неявно храните количество смертей в игровой сущности, просто добавьте getDeaths()
функция к сущности. В любом случае, вы должны иметь его там, а не хранить открытую переменную, которую можно изменить в любом случае.
Метод Repository понадобился бы, если бы вы запрашивали количество смертей непосредственно из базы данных, и в этом случае вы могли бы просто передать это непосредственно в шаблон.
Имейте в виду, что вы можете передать любое количество переменных в шаблон, так что это не должно быть просто
return array('game' => $game);
а затем в вашем шаблоне:
{{ game.numDeaths }}
Вы также можете легко передать количество смертей в свой шаблон, чтобы он был легко доступен:
return array('game' => $game, 'numDeaths' => $numDeaths);
а затем в вашем шаблоне:
{{ numDeaths }}
Надеюсь, это поможет.
Использовать пользовательское расширение / функции ветки:
public function getFunctions()
{
return [
new \Twig_SimpleFunction('number_of_death', [$this, 'getNumberOfDeath'])
]
}
public function getNumberOfDeath(Entity $entity)
{
// logic
return $return;
}
использование:
{{ number_of_death(entity) }}