Я сталкиваюсь с проблемой с моей формой, и мне нужна помощь …
Я хочу создать форму, которая может сохранять рекламу. Моя проблема исходит из моих изображений «ManyToMany». Новый div, который я получаю по форме «images», выглядит так:
<div><label class="required">Images</label><div id="annonce_rent_images" data-prototype="<div><label class="required">__name__label__</label><div id="annonce_rent_images___name__"><div><label for="annonce_rent_images___name___url" class="required">Url</label><input type="url" id="annonce_rent_images___name___url" name="annonce_rent[images][__name__][url]" required="required" /></div><div><label for="annonce_rent_images___name___alt" class="required">Alt</label><input type="text" id="annonce_rent_images___name___alt" name="annonce_rent[images][__name__][alt]" required="required" /></div></div></div>"></div></div>
Поля «url» и «alt» застревают в атрибуте data-prototype sub-div. Как я должен это исправить?
Вот несколько примеров моего кода, если вам нужны полные файлы, я могу опубликовать их.
ФОРМБУИЛЕР:
$builder ->add('name', TextType::class) ->add('description', TextType::class) ->add('price', TextType::class) ->add('location', TextType::class) ->add('zipcode', TextType::class) ->add('images', CollectionType::class, array( 'entry_type' => 'LAMainBundle\Form\ImageType', 'allow_add' => true, 'allow_delete' => true )) ->add('save', SubmitType::class, array('label' => 'Save')) ;
IMAGEBUILDER:
$builder ->add('url', UrlType::class) ->add('alt', TextType::class) ;
CONTROLLER addRentAction:
$annonce = new AnnonceRent(); $form = $this->createForm('LAMainBundle\Form\AnnonceRentType'); return $this->render('LAMainBundle:Admin:addrent.html.twig', array( 'form' => $form->createView(), ));
Для добавления полей вам нужен javascript, вот что можно сделать с помощью jQuery:
<div> <label class="required">Images</label> <div id="annonce_rent_images" data-prototype="<div><label class="required">__name__label__</label><div id="annonce_rent_images___name__"><div><label for="annonce_rent_images___name___url" class="required">Url</label><input type="url" id="annonce_rent_images___name___url" name="annonce_rent[images][__name__][url]" required="required" /></div><div><label for="annonce_rent_images___name___alt" class="required">Alt</label><input type="text" id="annonce_rent_images___name___alt" name="annonce_rent[images][__name__][alt]" required="required" /></div></div></div>"> </div> </div> <!-- ... --> <button id="add_image">Add image</button> <script src="/js/jquery-2.2.1.min.js"></script> <script> function addEntry() { var $container = $('#annonce_rent_images'), $prototype = $container.data('prototype'); $prototype.replace(/__name__/g, $container.children('div').length); $container.append($prototype); } addEntry(); // add a first field by default $('#add_image').click(addEntry); </script>