Symfony - 嵌入表单中的食谱“添加新标签”不起作用

Symfony - Cookbook "add new tag" in embed form isn't working

本文关键字:新标签 标签 不起作用 添加新标签 添加 表单 Symfony      更新时间:2023-09-26

我遵循了名为"如何嵌入表单集合"的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()
            ));
    }

还有我的表格.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>

我终于在这个视频中找到了一个更简单的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);
         });
     });
相关文章: