我正在使用Symfony2,我有一个项目列表,其中有一个按钮,用于编辑每个项目旁边的项目。像这样的东西
第1项| 修改的
第2项| 修改的
第3项| 修改的
在同一页面上是版本的形式,但它是隐藏的,当你点击按钮编辑一个项目时,它会变成js可见。问题是您仍然在同一页面上,对于每个项目,表单应该填充不同的对象。你有任何想法如何实现这一点,因为当网址没有改变时我不知道如何调用不同的控制器。非常感谢你提前! :)
JS:
$(".editItem").on('click', function(){
$(".show").toggle();
return false;
});
答案 0 :(得分:1)
许多解决方案:
如果我们使用第一种方法,我们所做的是使用ajax或表单检索当前项目,假设您的编辑链接看起来像这样:
<a href="{{ path("url", {id: myid}) }}" data-id="{{ myid }}">Edit</a>
在javascript中我们这样做:
$('.editItem').click(function(e) {
// We avoid the default behaviour (ie following the link)
e.preventDefault();
// We load the form with ajax
$('.show').load('', {id: $(this).attr('data-id')});
});
然后在您的控制器(显示当前视图的控制器)中:
if($request->isXmlHttpRequest()) {
$myid = $request->query->get('id'); // Could be $request->request
$entity = $em->getRepository('...')->getOneById($myid);
return $this->render('form.html.twig', array('entity' => $entity));
}
答案 1 :(得分:1)
这是我过去使用过的方法:
然后,当您调用视图时,您可以渲染表单,它将自动附加子表单。然后你的JS只需要打开/关闭相应的表单。
在处理表单时,你需要全部使用它们,所以如果你有一些识别哪个元素的方法是最好的。
你也会遇到标签问题 - 这只是摆弄主题的一个案例。