【问题标题】:Symfony 2.8 - Form Collection Type rendering only labelSymfony 2.8 - 表单集合类型仅呈现标签
【发布时间】:2016-11-03 09:16:45
【问题描述】:

在我的应用程序中,用户可以使用多种语言,因此 UserLanguage 实体通过 ManyToOne 关系相关联。

在用户实体类中:

/**
 * @ORM\OneToMany(targetEntity="TraineeLanguage", mappedBy="trainee", cascade={"persist"}))
 */
private $languages;

public function __construct()
{
    $this->languages = new ArrayCollection();
}

在语言实体类中:

/**
 * @ORM\ManyToOne(targetEntity="Trainee", inversedBy="languages")
 * @ORM\JoinColumn(name="trainee_id", referencedColumnName="id")
 */
private $trainee;

现在我想在用户个人资料表单中创建一个语言表单集合:

->add('languages', CollectionType::class, array(
    'type' => TraineeLanguageType::class,
    'required' => false
))

我的语言表单类:

class TraineeLanguageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('language', TextType::class, array(
                'attr' => array(
                    'placeholder' => 'Language'
                ),
                'required' => false
            ))
            ->add('level', TextType::class, array(
                'attr' => array(
                    'placeholder' => 'Level'
                ),
                'required' => false
            ));
    }
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver
            ->setDefaults(array(
                'data_class' => 'IndexBundle\Entity\TraineeLanguage'
            ));
    }

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

现在当我尝试显示表单时

{{ form_row(trainee_background_information_form.languages) }}

只显示标签。

它也不适用于:

{{ form_widget(trainee_background_information_form.languages) }}

{% for language in trainee_background_information_form.languages %}
    {{ form_row(language) }}
{% endfor %}

有人注意到我的代码中的错误并知道发生了什么吗?

【问题讨论】:

    标签: forms symfony formcollection symfony-2.8


    【解决方案1】:

    当你使用Collection Type时,你需要编写额外的html & js,来处理这个类型的字段。更多内容在 Symfony 文档中:http://symfony.com/doc/current/reference/forms/types/collection.html

    【讨论】:

    • 我完全错过了添加、删除按钮的部分。由于 MopaBootstrap 和 BraincraftedBootstrap 包渲染了视图,我认为它们只是样式化而不是创建 JS 功能。谢谢,现在一切都很好。
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-10-08
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多