duande1986 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!

  • 写回答

1条回答 默认 最新

  • dqu94359 2015-08-18 07:22
    关注

    Hopefully this helps you out

    ParentType:

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

    ChildType:

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

    Controller:

    $funding = new Funding();
    $project->getFunding()->add($funding);
    

    Twig

     <div class="funding" data-prototype="{{ form_widget(form.funding.vars.prototype)|e}}">
           {% for funding in form.funding %}
                  {{ form_row(funding.type) }}
           {% endfor %}
     </div>
    
    <script>
    // 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
        $collectionHolder1.append($newLinkLi1);
    
        // 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
            e.preventDefault();
    
            // 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>');
    
        $newLinkLi1.before($newFormLi1);
    
        // handle the removal, just for this example
        $('.remove-funding').click(function(e) {
            e.preventDefault();
    
            $(this).parent().remove();
    
            return false;
        });
    }
    
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭