У меня в базе данных и в одной сущности два свойства:
title_one
title_two
И в шаблоне (TWIG) я хотел бы получить только одно из этих полей.
{% set type = 'two' %}
Я могу:
<div id="title">
{% if type == 'one' %}
{% entity.title_one %}
{% elseif type == 'two' %}
{% entity.title_two %}
{% endif %}
</div>
Это хорошо работает, но я хотел бы сделать что-то вроде этого:
<div id="title">
{{ entity.title_{{ type }} }}
</div>
Как я могу это сделать?
Попробуйте использовать Функция атрибута ветки как это :
{{ attribute(entity, "title_" ~ type) }}
Просто добавьте вспомогательный метод к объекту, что-то вроде getMyType()
, Это вернет правильный тип. В шаблоне Twig вы можете получить доступ к этому методу:
{% set type == myEntity.getMyType() %}
Обратите внимание, что вы должны внедрить сущность в шаблон вашего контроллера:
$Response = $this->render(
"MySomethingBundle:Area:page.html.twig",
array('myEntity' => $entityInstance));
Кстати, вы можете посмотреть на различные стратегии картирования наследования.