Javascript Symfony-食谱“;添加新标签";嵌入形式的isn';行不通
我遵循了Symfony cookbook中名为“如何嵌入表单集合”的部分,并添加了此javascript函数,使其具有添加新标记字段的链接。表单正确,显示任务描述字段和一个标记名字段 当我点击链接时,什么也没发生。JS代码显示在我页面的源代码中。 顺便说一句,Netbeans告诉我在我的链接中添加一个标记“预期分号;后面)” 这是我的控制器代码:Javascript Symfony-食谱“;添加新标签";嵌入形式的isn';行不通,javascript,jquery,symfony,cookbook,Javascript,Jquery,Symfony,Cookbook,我遵循了Symfony cookbook中名为“如何嵌入表单集合”的部分,并添加了此javascript函数,使其具有添加新标记字段的链接。表单正确,显示任务描述字段和一个标记名字段 当我点击链接时,什么也没发生。JS代码显示在我页面的源代码中。 顺便说一句,Netbeans告诉我在我的链接中添加一个标记“预期分号;后面)” 这是我的控制器代码: public function addTaskAction() { $task = new Task(); $
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()
));
}
和my 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>
var collectionHolder=$('ul.tags');
变量$addTagLink=$('');
变量$newLinkLi=$('')。追加($addTagLink);
jQuery(文档).ready(函数(){
collectionHolder.append($newLinkLi);
$addTagLink.on('click',函数(e){
e、 预防默认值();
地址表(收款人,$newLinkLi);
});
collectionHolder.find('li')。每个(函数(){
addTagFormDeleteLink($(此));
});
});
函数addTagForm(collectionHolder$newLinkLi){
var-prototype=collectionHolder.attr('data-prototype');
var newForm=prototype.replace(/\u\u name\u\g,
collectionHolder.children().length);
变量$newFormLi=$('')。追加(newForm);
$newLinkLi.before($newFormLi);
}
}
{{form_row(form.description)}}
标签
{{form_rest(form)}
我终于在这段视频中找到了一个更简单的JS代码:它工作得很好
$(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);
});
});
$(函数(){
var指数=0;
var prototype=$('ul.answer')。数据('prototype');
$('#addmore')。在('单击',函数()上){
var newForm=prototype.replace(/\uuuuu name\uuuuu/g,index++);
var newLi=$(“”);
newLi.append(newForm);
美元(本)。之前(纽利);
});
});
设置分号=>onclick=“addTagForm();”我会从烹饪书中获取javascript代码。分号不会改变任何内容。这是烹饪书javascript,我没有做任何更改。我注意到在我的url末尾添加了#,它不应该带有“e.preventDefault();”。我发现这段代码非常相似,但效果并不好: