获取带变量的对象

时间:2014-09-25 06:14:10

标签: php symfony twig

我在数据库和一个实体中有两个属性:

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>

我该怎么做?

2 个答案:

答案 0 :(得分:4)

尝试使用Twig attribute function,如下所示:

{{ attribute(entity, "title_" ~ type) }}

答案 1 :(得分:0)

只需向实体添加辅助方法,例如getMyType()。这将返回正确的类型。在Twig模板中,您可以访问此方法:

{% set type == myEntity.getMyType() %}

请注意,您必须将实体注入控制器的模板中:

$Response = $this->render(
    "MySomethingBundle:Area:page.html.twig",
    array('myEntity' => $entityInstance));

顺便说一句,你可能想看看different strategies of inheritance mapping