2015-08-18 03:17
浏览 63

如何在Symfony 2中使用集合字段类型

I'have been trying to use thr vollevtion field type in my Symfony 2 form, but it doesn't work. I already asked the same question sometime ago, but I didn't get the answer I wanted. I reed the documentation again (http://symfony.com/doc/current/reference/forms/types/collection.html), but I still got the same probleme.

I already explane everything inside my other post, so here it is:

How to integrate multiple entity in form in Symfony 2

Please, someone help me!

图片转代码服务由CSDN问答提供 功能建议

我一直在尝试在我的Symfony 2表单中使用thr vollevtion字段类型,但它不起作用。 我前段时间已经问了同样的问题,但我没有得到我想要的答案。 我再次阅读文档( http://symfony.com/doc/ current / reference / forms / types / collection.html ),但我仍然遇到同样的问题。


如何在Symfony 2中整合多个实体形式

请 ,有人帮助我!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dqu94359 2015-08-18 07:22

    Hopefully this helps you out


    ->add('funding', 'collection', array(
                    'type' => new FundingType(),
                    'allow_add' => true,
                    'by_reference' => false,
                    'allow_delete' => true))


    public function buildForm(FormBuilderInterface $builder, array $options)
                ->add('type', 'text', array(   
                    'label' => 'Funding'));
        public function setDefaultOptions(OptionsResolverInterface $resolver)
                'data_class' => 'Bundle\Entity\Funding',


    $funding = new Funding();


     <div class="funding" data-prototype="{{ form_widget(form.funding.vars.prototype)|e}}">
           {% for funding in form.funding %}
                  {{ form_row(funding.type) }}
           {% endfor %}
    // Funding
    // setup an "add a tag" link
    var $addFundingLink = $('<a href="#" class="add_funding_link">Add Funding type</a>');
    var $newLinkLi1 = $('<p></p>').append($addFundingLink);
    jQuery(document).ready(function() {
        // Get the ul that holds the collection of tags
       var $collectionHolder1 = $('div.funding');
        // add the "add a tag" anchor and li to the tags ul
        // count the current form inputs we have (e.g. 2), use that as the new
        // index when inserting a new item (e.g. 2)
        $collectionHolder1.data('index1', $collectionHolder1.find(':input').length);
        $addFundingLink.on('click', function(e) {
            // prevent the link from creating a "#" on the URL
            // add a new tag form (see code block below)
            addFundingForm($collectionHolder1, $newLinkLi1);
    function addFundingForm($collectionHolder1, $newLinkLi1) {
        // Get the data-prototype explained earlier
        var prototype = $collectionHolder1.data('prototype');
        // get the new index
        var index1 = $collectionHolder1.data('index1');
        // Replace '$$name$$' in the prototype's HTML to
        // instead be a number based on how many items we have
        var newForm1 = prototype.replace(/__name__/g, index1);
        // increase the index with one for the next item
        $collectionHolder1.data('index1', index1 + 1);
        // Display the form in the page in an li, before the "Add a tag" link li
        var $newFormLi1 = $('<p></p>').append(newForm1);
        // also add a remove button, just for this example
        $newFormLi1.append('<a href="#" class="remove-funding">Delete</a>');
        // handle the removal, just for this example
        $('.remove-funding').click(function(e) {
            return false;
    解决 无用
    打赏 举报

相关推荐 更多相似问题