2017-01-26 6 views
0

На моем Symfony2 проекте я получил список аргументов:Symfony пользовательских полей добавить

<ul class="arguments" data-prototype="{{ form_widget(form.arguments.vars.prototype)|e('html_attr') }}"> 
    {% for argument in form.arguments %} 
     {#<li>{{ form_row(argument) }}</li>#} 
     <li> 
      {{ form_row(argument.name, {'label': 'Name'}) }} 
      {{ form_row(argument.french_description) }} 
      {{ form_row(argument.english_description) }} 
      {{ form_row(argument.return) }} 
      {{ form_row(argument.type) }} 
     </li> 
    {% endfor %} 
</ul> 

Но я кнопка «Добавить аргументы», создавая новый < li> </li> с аргументами полей. Проблема заключается в том, что новый аргумент не получил пользовательскую метку «Имя».

EDIT: Я добавляю аргументы с бутоном, вызывающим функцию JS, чтобы добавить мои поля на странице. Затем, когда я нажимаю кнопку «Отправить», сохраните его в базе данных.

$('#add_argument_link').on('click', function(e) { 
    // prevent the link from creating a "#" on the URL 
    e.preventDefault(); 

    // setup an "add a argument" link 
    var $newLinkLi = $('<li></li>'); 

    // add a new argument form (see next code block) 
    addArgumentForm($collectionHolder, $newLinkLi); 
    addTagFormDeleteLink($newLinkLi); 
}); 

Благодарим за помощь.

+0

Как добавить новые аргументы? можете ли вы показать скрипт, который это делает? – Mawcel

ответ

0

Вы можете попробовать что-то вроде этого:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var $container = $('div#name_of_your_div'); 

     var index = $container.find(':input').length; 

     $('#add_argument').click(function(e) { 
      addArgument($container); 

      e.preventDefault(); 
      return false; 
     }); 

     if (index == 0) { 
      addArgument($container); 
     } else { 
      $container.children('div').each(function() { 
       addDeleteLink($(this)); 
      }); 
     } 

     function addArgument($container) { 
      var template = $container.attr('data-prototype') 
          .replace(/__name__label__/g, 'Argument number' + (index+1)) 
          .replace(/__name__/g,  index); 

      var $prototype = $(template); 

      addDeleteLink($prototype); 

      $container.append($prototype); 

      index++; 
     } 

     function addDeleteLink($prototype) { 
      var $deleteLink = $('<a href="#" class="btn btn-danger">Delete</a>'); 

      $prototype.append($deleteLink); 

      $deleteLink.click(function(e) { 
       $prototype.remove(); 

       e.preventDefault(); 
       return false; 
      }); 
     } 
    }); 
</script> 
Смежные вопросы