Symfony2:在表单集合中自定义表单标签

2024-02-12

我正在尝试自定义在子表单中生成的表单标签。

我想显示特定比赛周中包含的足球比赛,如下所示:



- Fixture 1 : Manchester United (0) - (1) Arsenal
- Fixture 2 : Chelsea (2) - (1) Liverpool
- ...
  

我的表单显示所有灯具和相关分数,但所有标签都包含数据库列名称(score1、score2)。我想用团队名称代替。 因此,目前显示:



- Fixture 1 : score1 (0) - (1) score2
- Fixture 2 : score1 (2) - (1) score2
- ...
  

在控制器中,我生成周表单 (WeekType)。 $week 使用 $week->getFixtures() 包含周数据和赛程数据。

控制器/DefaultController.php

$form = $this->createForm(new WeekType(), $week)->createView();

return array(
    'form' => $form,
);

表格/WeekType.php

class WeekType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('fixtures', 'collection', array(
            'type' => new FixtureType(),
        ));
    }
 }

Fixture 表单添加 2 个字段。我想将默认标签替换为团队名称。 但是我无法以这种形式访问夹具数据。 $选项为空。我认为 $options['data'] 将包含灯具数据......但我错了。

表格/FixtureType.php

class FixtureType extends AbstractType
{  
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('score1', 'text', array('label' => **WHAT TO PUT HERE**));
        $builder->add('score2', 'text', array('label' => **WHAT TO PUT HERE**));
    }
}

我使用此代码显示所有灯具,效果很好。

索引.html.twig

    {% for fixture in week.form.fixtures %}
        {{ form_widget(fixture) }}
    {% endfor %}

也许我可以直接在index.html.twig中自定义标签,但如何获取灯具数据?

有人遇到这个问题并解决它吗?


我找到了解决办法!

在“index.html.twig”模板中,我迭代了表单元素。 那是一个错误。我只需要迭代固定装置并获取相关的表单小部件。

索引.html.twig

{% for fixture in week.fixtures %}
    fixture.HomeTeam.name
    {{ form_widget(week.form.fixtures[loop.index0]) }}
    fixture.AwayTeam.name
{% endfor %}

技巧是直接从表单小部件数组中检索表单元素:

    week.form.fixtures[loop.index0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:在表单集合中自定义表单标签 的相关文章

随机推荐