Symfony - Поваренная книга «добавить новый тег» в форме для вставки не работает

0

Я следил за частью кулинарной книги Symfony под названием "Как встроить коллекцию форм" и добавил эту функцию javascript, чтобы иметь ссылку, которая добавляет новое поле тега. Форма правильная, отображая поле описания задачи и одно поле имени тега.

Когда я нажимаю на ссылку, ничего не происходит. Код JS показан в исходном коде моей страницы. Кстати, Netbeans говорит мне "ожидаемая точка с запятой, после") в моей ссылке Добавить тег

Вот мой код контроллера:

public function addTaskAction()
    {
        $task = new Task();
        $task->addTag(new Tag());

        $form = $this->createForm(new TaskType(), $task);

        $request = $this->get('request');
        if ($request->getMethod() === 'POST') {
            $form->bind($request);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($task);
                $em->flush();

            return $this->redirect($this->generateUrl('mytask_task',
                array('id' => $task->getId())));
            }
        }    
        return $this->render('MyTaskBundle:Question:taskadd.html.twig',
            array(
                'form' => $form->createView()
            ));
    }

И мой form.html.twig:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">     
    var collectionHolder = $('ul.tags');
    var $addTagLink = $('<a href="#" class="add_tag_link">Add a tag</a>');
    var $newLinkLi = $('<li></li>').append($addTagLink);

    jQuery(document).ready(function() {
        collectionHolder.append($newLinkLi);
        $addTagLink.on('click', function(e) {
            e.preventDefault();
            addTagForm(collectionHolder, $newLinkLi);
        });
        collectionHolder.find('li').each(function() {
            addTagFormDeleteLink($(this));
        });
    });
    function addTagForm(collectionHolder, $newLinkLi) {
        var prototype = collectionHolder.attr('data-prototype');
        var newForm = prototype.replace(/__name__/g,
 collectionHolder.children().length);
        var $newFormLi = $('<li></li>').append(newForm);
        $newLinkLi.before($newFormLi);

    }

    }       
</script>

    <form method="post" {{ form_enctype(form) }}>
    {{ form_row(form.description) }}

    <h3>Tags</h3>

    <ul class="tags" data-prototype="{{ form_widget(form.tags.vars.prototype)|e }}">
    {% for tag in form.tags %}
        <li>{{ form_row(tag.name) }}</li>
    {% endfor %}
            <a href="#" class="add_tag_link" onclick="addTagForm()">Add a tag</a>
    </ul>

    {{ form_rest(form) }}
    <input type="submit" class="btn btn-primary" />
    </form>
  • 0
    установить точку с запятой => onclick = "addTagForm ();" Я взял бы код JavaScript из кулинарной книги.
  • 0
    Это ничего не меняет с точкой с запятой. Это поваренная книга javascript, я ничего не изменил.
Показать ещё 1 комментарий
Теги:
cookbook

1 ответ

0
Лучший ответ

Наконец, я нашел более простой код JS в этом видео: http://www.mistra.fr/tutoriel-symfony-2-les-formulaires-imbriques.html, и он отлично работает!

   $(function(){
         var index = 0;
         var prototype = $('ul.answer').data('prototype');
         $('#addmore').on('click', function(){
             var newForm = prototype.replace(/__name__/g, index++);
             var newLi = $('<li></li>');

             newLi.append(newForm);
             $(this).before(newLi);
         });
     });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню