使用嵌入表单的问题

时间:2014-07-02 11:52:42

标签: php jquery twig symfony-2.4

我正在使用Symfony2中的嵌入表单。我的主要表单名为“ inmovilizado_form ”,集合为“ inmovilizado_concepto_form ”。它工作正常,但我有一个jquery的问题,当我点击“Añadirconcepto”它添加2行inmovilizado_concepto_form而不是一个,因为它应该是。我从官方文档中获取代码后无法猜出问题出在哪里。您可以在下面看到显示2“conceptos”的图像。

enter image description here

这是我的代码:

TWIG:

<div class="form">
    {{ form_start(inmovilizado_form) }}
        <div class="input-box">
            {{ form_row(inmovilizado_form.proveedor) }}
        </div>
        <div class="input-box">
            {{ form_row(inmovilizado_form.anos) }}
        </div>
        <div class="input-box">
            {{ form_row(inmovilizado_form.fecha) }}
        </div>
        <div class="title">
             Conceptos
        </div>
        <div class="conceptos" data-prototype="{{ form_widget(inmovilizado_form.conceptos.vars.prototype)|e }}">
            {% for concepto in inmovilizado_form.conceptos %}
                {{ form_row(concepto.nombre) }}
                {{ form_row(concepto.base) }}
                {{ form_row(concepto.cantidad) }}
                {{ form_row(concepto.iva) }}
            {% endfor %}
        </div>
        {% block javascripts %}
                {{ parent() }}
            <script>
                var $collectionHolder;
                var $addTagLink = $('<a href="#" class="add_concepto_link">A&ntilde;adir concepto</a>');
                var $newLinkLi = $('<div class="add_concepto"></div>').append($addTagLink);
            </script>
        {% endblock %}
        {{ form_row(inmovilizado_form.submit) }}
        {{ form_row(inmovilizado_form.cancel) }}
    {{ form_end(inmovilizado_form) }}
</div>

JQUERY(1.9.1)

$(document).ready(function(){

        $collectionHolder = $('div.conceptos');

        $collectionHolder.append($newLinkLi);

        $collectionHolder.find('.item').each(function() {
            addTagFormDeleteLink($(this));
        });

        $collectionHolder.data('index', $collectionHolder.find(':input').length);

        $addTagLink.on('click', function(e) {
            e.preventDefault();
            addTagForm($collectionHolder, $newLinkLi);
        });
});

function addTagForm($collectionHolder, $newLinkLi) {

     var prototype = $collectionHolder.data('prototype');
     var index = $collectionHolder.data('index');
     var newForm = prototype.replace(/__name__/g, index);

     $collectionHolder.data('index', index + 1);

     var $newFormLi = $('<div class="item"></div>').append(newForm);
     $newLinkLi.before($newFormLi);

     addTagFormDeleteLink($newFormLi);
}

function addTagFormDeleteLink($tagFormLi) {

     var $removeFormA = $('<a href="#">Eliminar concepto</a>');
     $tagFormLi.append($removeFormA);

     $removeFormA.on('click', function(e) {
          e.preventDefault();
          $tagFormLi.remove();
      });
 }

提前致谢!这让我发疯了!

0 个答案:

没有答案