Symfony fullcalendar 按 id 删除事件
Symfony fullcalendar delete event by id
我试图根据他的 ID 删除一个事件,我得到了 ID,但控制器给出了一个错误,因为它需要一个对象并且给出了一个字符串。
模态框的数据在事件点击时被填充。
eventClick: function(info) {
var eventObj = info.event;
//filling data
$('#ev_title').html(eventObj.title);
$('#ev_start').html('<b>Fecha inicio: </b> ' + eventObj.start);
$('#ev_end').html('<b>Fecha fin: </b> ' + eventObj.end);
$('#ev_desc').html('<b>Descripcion: </b>' +
eventObj.extendedProps.description);
$('#ev_mail').html('<b>Correo destino: </b> ' +
eventObj.extendedProps.mail);
$('#ev_id').html(eventObj.id);},
一个按钮重定向到删除功能。
<div id="myModal" class="modal fade" style="z-index: 9999;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 id="ev_title" class="modal-title"></h4>
--> <h4 id="ev_id" class="modal-title"></h4>
</div>
<!-- dialog body -->
<div class="modal-body">
<p id="ev_start" class="modal-body"></p>
<p id="ev_end" class="modal-body"></p>
<p id="ev_mail" class="modal-body"></p>
<p id="ev_desc" class="modal-body"></p>
</div>
<!-- dialog buttons -->
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary">Cerrar</button>
<button type="button" class="btn btn-danger" onclick="borrar()">Borrar evento</button>
</div>
</div>
</div>
function borrar(){
var data = $('#ev_id').html();
$.ajax({
type: "POST",
data: { id: data },
url: "{{ path('borrar') }}",
function(response){
if(response.code === 200 && response.success){ alert('success!'); }
else{ alert('something broken');}},
success: function(data)
{
console.log(data);
alert('OK');
}
});
}
XHR POST ID
控制器:
public function deleteAction(Request $request){
$em = $this->getDoctrine()->getManager();
$data = $request->request->get('id');
$em->remove($data);
$em->flush();
这是错误信息:
EntityManager#remove() expects parameter 1 to be an entity object, string given
您应该从 id 中检索对象并删除该对象。
$object = $em->getDoctrine()->getRepository(Entity::class)->find($request->get("id")
然后像你一样删除 $object :
$em->remove($object); $em->flush();
提示:如果您使用 Symfony >=3.4 和默认服务配置,您可以在函数的参数中注入 EntityManagerInterface $em, ClassRepository $repo
。
public function deleteAction(Request $request, EntityManagerInterface $em, ClassRepository $repo){
$object = $repo->find($request->get('id');
$em->remove($object);
$em->flush();
实际上有很多方法可以实现,但最好和最简单的做法是将 id 嵌入 url 中,如下所示:
/**
* @Route("/delete/{id}")
*/
然后使用 Symfony 的 ParamConverter 来获取这样的对象:
/**
* @Route("/delete/{id}")
*/
public function deleteAction(YourClass $yourClassObject, EntityManagerInterface $em)
{
$em->remove($object);
$em->flush();
}
我试图根据他的 ID 删除一个事件,我得到了 ID,但控制器给出了一个错误,因为它需要一个对象并且给出了一个字符串。
模态框的数据在事件点击时被填充。
eventClick: function(info) {
var eventObj = info.event;
//filling data
$('#ev_title').html(eventObj.title);
$('#ev_start').html('<b>Fecha inicio: </b> ' + eventObj.start);
$('#ev_end').html('<b>Fecha fin: </b> ' + eventObj.end);
$('#ev_desc').html('<b>Descripcion: </b>' +
eventObj.extendedProps.description);
$('#ev_mail').html('<b>Correo destino: </b> ' +
eventObj.extendedProps.mail);
$('#ev_id').html(eventObj.id);},
一个按钮重定向到删除功能。
<div id="myModal" class="modal fade" style="z-index: 9999;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 id="ev_title" class="modal-title"></h4>
--> <h4 id="ev_id" class="modal-title"></h4>
</div>
<!-- dialog body -->
<div class="modal-body">
<p id="ev_start" class="modal-body"></p>
<p id="ev_end" class="modal-body"></p>
<p id="ev_mail" class="modal-body"></p>
<p id="ev_desc" class="modal-body"></p>
</div>
<!-- dialog buttons -->
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary">Cerrar</button>
<button type="button" class="btn btn-danger" onclick="borrar()">Borrar evento</button>
</div>
</div>
</div>
function borrar(){
var data = $('#ev_id').html();
$.ajax({
type: "POST",
data: { id: data },
url: "{{ path('borrar') }}",
function(response){
if(response.code === 200 && response.success){ alert('success!'); }
else{ alert('something broken');}},
success: function(data)
{
console.log(data);
alert('OK');
}
});
}
XHR POST ID
控制器:
public function deleteAction(Request $request){
$em = $this->getDoctrine()->getManager();
$data = $request->request->get('id');
$em->remove($data);
$em->flush();
这是错误信息:
EntityManager#remove() expects parameter 1 to be an entity object, string given
您应该从 id 中检索对象并删除该对象。
$object = $em->getDoctrine()->getRepository(Entity::class)->find($request->get("id")
然后像你一样删除 $object :
$em->remove($object); $em->flush();
提示:如果您使用 Symfony >=3.4 和默认服务配置,您可以在函数的参数中注入 EntityManagerInterface $em, ClassRepository $repo
。
public function deleteAction(Request $request, EntityManagerInterface $em, ClassRepository $repo){
$object = $repo->find($request->get('id');
$em->remove($object);
$em->flush();
实际上有很多方法可以实现,但最好和最简单的做法是将 id 嵌入 url 中,如下所示:
/**
* @Route("/delete/{id}")
*/
然后使用 Symfony 的 ParamConverter 来获取这样的对象:
/**
* @Route("/delete/{id}")
*/
public function deleteAction(YourClass $yourClassObject, EntityManagerInterface $em)
{
$em->remove($object);
$em->flush();
}