Symfony fullcalendar удалить событие по id - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь удалить событие на основе его идентификатора, я получаю идентификатор, но контроллер выдает ошибку, потому что он ожидал, что объект и строка были заданы.


Данные модального получаетзаполнено при щелчке события.

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 POSTID


Контроллер:

public function deleteAction(Request $request){ 

$em = $this->getDoctrine()->getManager();

$data = $request->request->get('id');

$em->remove($data);
$em->flush();

Это сообщение об ошибке:

EntityManager # remove () ожидает параметр 1чтобы быть объектом сущности, строка дана

Ответы [ 2 ]

2 голосов
/ 25 мая 2019

На самом деле есть много способов реализовать это, но лучшая и самая легкая практика - встраивать id в URL следующим образом:

/**
 * @Route("/delete/{id}")
 */

затем используйте ParamConverter Symfony , чтобы получить объект, подобный этому:

/**
 * @Route("/delete/{id}")
 */
public function deleteAction(YourClass $yourClassObject, EntityManagerInterface $em)
{
    $em->remove($object);
    $em->flush();
}
0 голосов
/ 25 мая 2019

Вы должны извлечь объект из идентификатора и удалить объект.$object = $em->getDoctrine()->getRepository(Entity::class)->find($request->get("id") и затем удалите объект $, как вы это сделали: $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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...