在TWIG中连接和修剪的正确方法是什么

时间:2016-08-03 18:34:25

标签: symfony twig

我是TWIG的新手。我可以在PHP中执行此操作,但我正在寻找使用TWIG在模板中执行此操作的正确方法。

控制器代码:

public function indexAction()
    {
        $em = $this->getDoctrine()
               ->getEntityManager();
        $properties = $em->getRepository('MainBundle:Property')->findAll();

        return $this->render('MainBundle:Admin:index.html.twig', array(
            'bmproperty'     => $properties,
        ));
    }

TWIG模板:

{% for property in bmproperty %}
            <div {% if property.hasHoaLien == false %}class="nolien"{% else %}class="haslien"{% endif %}>
                <ul><li><a href="{{ path('MainBundle_Property_Edit', {'id' : property.id}) }}">
                            {% if property.houseNumber is null %} {{ property.street }}
                                Lot #{{ property.lotNumber }}
                            {% else %}
                                {{ property.houseNumber }} {{ property.street }}
                            {% endif %}
                        </a>
                    </li><li>
                    {% if property.user is not empty %}
                        {% for user in property.user %}
                            {{ user.fullname }},
                        {% endfor %}
                    {% else %}
                        {{ property.status }}
                    {% endif %}
                    </li><li>{{ property.type }}</li>{% if property.isOccupied == true %}<li>Occupied</li>{% else %}<li>Vacant</li>{% endif %}{% if property.inArrears == true %}<li>Yes</li>{% else %}<li>No</li>{% endif %}</ul>
            </div>
        {% endfor %}

我的问题在于上面代码中的这段代码:

{% for user in property.user %}
  {{ user.fullname }},
{% endfor %}

这一行有两个用户名,我只想尝试用逗号分隔它们,然后修剪最后一个逗号。

我是否将两个用户分配给模板中的变量然后只使用TWIG中的TRIM选项?如果是这样,我不确定如何将它们连接到TWIG模板中的单个变量。

1 个答案:

答案 0 :(得分:2)

您不能使用非数组变量的连接。在您使用的示例中:

{{ property.user.fullname|join(',') }}

Join作为php implode函数工作,因此参数必须是数组。 fullname不是property.user的成员,但是每个属性的成员.user.0.fullname,property.user.1.fullname

要使用2个或更多字符串,可以使用〜运算符

{{ property.user.0.fullname ~', ' ~ property.user.1.fullname }}

我的方法是添加一个包含名称的变量,然后在for

之后将其内爆
{% set arr ={} %
{% for key,user in property.user %}
  {% set arr = arr|merge({key: user.fullname}) %}  
{% endfor %}
{{ arr|join(',') }}
相关问题