形成一个集合小部件

时间:2012-03-18 14:13:09

标签: symfony twig

我的表单中有一个集合小部件。这显示如下:

团队0 player1 inputfield
1 player2 inputfield

我不想显示'团队'这个词,'0'和'1'。 我在fields.html.twig模板中有这个块,但不确定如何编辑它。

{% block collection_widget %}
{% spaceless %}
    {% if prototype is defined %}
        {% set attr = attr|merge({'data-prototype': form_row(prototype) }) %}
    {% endif %}
    {{ block('form_widget') }}
{% endspaceless %}
{% endblock collection_widget %}

{% block form_label %}
{% spaceless %}
    <div class="hidden">
        {{ block('generic_label') }}
    </div>
{% endspaceless %}
{% endblock form_label %}

ChallengeType表单:

class ChallengeType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('teams', 'collection', array(
                'type' => new TeamType(),
                'allow_add' => true
            ))
            ->add('place')
            ->add('date');
    }

    public function getName()
    {
        return 'challenge';
    }

    public function getDefaultOptions(array $options)
    {
        return array('data_class' => 'Tennisconnect\DashboardBundle\Entity\Challenge');
    }
}

THX。

1 个答案:

答案 0 :(得分:5)

这些标签是在form_label块中创建的。我通常将它们包装在div中,并在需要时将它们隐藏起来。

修改

有一个更好的解决方案:)。

使用以下

更改collection的{​​{1}}部分
ChallengeType.php

现在这些不需要的标签会有->add('teams', 'collection', array( 'type' => new TeamType(), //label for Teams text 'attr' => array('class' => 'team-collection'), //label for each team form type 'options' => array( 'attr' => array('class' => 'team-collection') ), 'allow_add' => true )) 类。在您的css文件中,您可以为team-collection设置display:none。无需更改表单主题块定义。