我正在尝试设置博客,我有一份所有博客条目的列表以及该博客的所有用户列表。博客管理员可以从这些列表中删除单个条目。 无论如何,我遇到的问题是,当选择一个要删除的条目时,它总是我列表中的第一个被删除的条目,而不是我实际选择的条目。
这是我的deleteAction:
/**
* @Route("/blog/delete/{id}", name="entrydelete", requirements={"id" = "\d+"}, defaults={"id" = 0})
*
*/
public function deleteAction(Request $request, Blog $blog) {
$em = $this->getDoctrine()->getManager();
$entry = $em->getRepository('BlogBundle:Blog')->find($blog);
if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN') || $entry->getAuthor() == $this->getUser()->getUsername() ) {
$em->remove($entry);
$em->flush();
return $this->render('BlogBundle:blog:deletesubmit.html.twig');
}
else {
return $this->render('BlogBundle:blog:error.html.twig');
}
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults([
'data_class' => 'BlogBundle\Entity\Blog'
]);
}
和相应的树枝模板:
{% for blog in bloglist %}
<h4>{{ blog.title }}</h4>
<p><span class="fa fa-clock-o"></span> Posted on {{ blog.date|date('d.M Y H:i A') }} </p>
<p><span class="fa fa-user-circle"></span> Posted by {{ blog.author }} </p>
<p>{{ blog.text }}</p>
<button type="button" class="btn btn btn-info">
<a href="{{ path('entryedit', {'id':blog.id}) }}" style="color: #FEFEFE">Edit entry</a>
</button>
<button type="button" class="btn btn btn-warning">
<a href= "#myModal" role="button" data-toggle="modal" style="color: #FEFEFE">Delete entry</a>
</button>
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 class="modal-title" id="myModalLabel">Are you sure?</h3>
</div>
<div class="modal-body">
<p>Do you really want to delete this profile?</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal">
Go Back
</button>
<button type="button" class="btn btn btn-warning">
<a href="{{ path('entrydelete', {'id':blog.id}) }}" style="color: #FEFEFE">Yes</a>
</button>
</div>
</div>
</div>
</div>
<hr>
{% endfor %}
所以只是为了澄清一下:如果我有这样的列表: 1.进入1 2.第2条 3.进入3 并且我想删除条目3,选择那个并确认,条目1已经消失。
对任何形式的帮助都会感到高兴!!
答案 0 :(得分:1)
尝试改变这个:
git remote rm origin
到此:
https://username:password@github.com/repo-name
因为你需要通过传入url的id找到你的实体,你不会传递一个Blog对象而是一个id
答案 1 :(得分:0)
您的HTML代码确实存在问题。您可以渲染与元素一样多的模态,因为模态渲染位于{% for %}
循环内。
除了它没有真正优化以渲染这么多模态元素之外,它们都具有相同的myModal
id。当您单击&#34;删除条目&#34;按钮,显示标识为myModal
的模态,但其中有3个。您的浏览器显示第一个,这就是为什么它总是被删除的条目1。
在您的代码中还可以修复和优化其他内容,但要回答您的问题,这是一个简单的修复。
更改此行:
<a href= "#myModal" role="button" ...>Delete entry</a>
为:
<a href="#deleteEntryModal{{ blog.id }}" role="button" ...>Delete entry</a>
这一行:
<div id="myModal" ...>
到
<div id="deleteEntryModal{{ blog.id }}" ...>
这样,您就可以获得每个模态元素的唯一ID,这样可以使您的页面正常工作,并且HTML也有效。
正如我之前所说,也可以进行一些优化(比如只使用一个模态元素(在{% for %}
循环之外),并更改URL以使用JavaScript删除元素。但这不是这条消息的范围。
答案 2 :(得分:0)
如果实体经理可以找到具有整数id的Blog对象,也可以找到Blog $id
。点是$ blog应该是$ id,因为在路由中你定义了它:id
更改此部分:
/**
* @Route("/blog/delete/{id}", name="entrydelete", requirements={"id" = "\d+"}, defaults={"id" = 0})
*
*/
public function deleteAction(Request $request, Blog $blog)
到
/**
* @Route("/blog/delete/{id}", name="entrydelete", requirements={"id" = "\d+"})
*
*/
public function deleteAction(Request $request, Blog $id)