Объект Symfony 5 не найден аннотацией @ParamConverter

#ajax #symfony #annotations

#ajax #symfony #аннотации

Вопрос:

Я использую Symfony 5 и Doctrine 2.

Когда я использую описанный ниже вызов ajax, я получаю эту ошибку :

Объект App Entity Calendar не найден аннотацией @ParamConverter.

Однако я не использую параметр для своего маршрута.

Есть моя функция ajax :

     var url = Routing.generate('calendar.ajaxEditEvent');

    $.ajax({
    type: "POST",
    url: url,
    data: {

            title: e.event.title,
            description: e.event.extendedProps.description,
            start: e.event.start,
            end: e.event.end,
            backgroundColor: e.event.backgroundColor,
            borderColor: e.event.borderColor,
            textColor: e.event.textColor,
            allDay: e.event.allDay,
            calendarId: e.event.id

          }
    ,  
    dataType: 'json',  
    async: true,
    sucess: function(reponse){

        console.log('success');
        console.log(response);

    },  
    error : function(response) {  

        console.log('error');
        console.log(response);  

    }

});
 

И моя вызывающая функция в моем контроллере :

 /**
 * @Route("/ajaxEditEvent", options={"expose"=true}, name="calendar.ajaxEditEvent", methods={"POST"})
 *
 * @param CalendarRepository $calendarRepository
 * @param Request $request
 * @param EntityManagerInterface $manager
 * 
 * @return Response
 */
public function ajaxEditEvent(CalendarRepository $calendarRepository, Request $request, EntityManagerInterface $manager): Response
{
    
    $title = $request->get('title');
    $description = $request->query->get('description');
    $start = $request->query->get('start');
    $end = $request->query->get('end');
    $backgroundColor = $request->query->get('backgroundColor');
    $borderColor = $request->query->get('borderColor');
    $textColor = $request->query->get('textColor');
    $allDay = $request->query->get('allDay');
    $calendarId = $request->query->get('calendarId');

    if(
        !empty($title) amp;amp;
        !empty($description) amp;amp;
        !empty($start) amp;amp;
        !empty($backgroundColor) amp;amp;
        !empty($borderColor) amp;amp;
        !empty($textColor)
      ) 
    {
       
        $code = 200;
        $message = '';

        if(empty($calendarId))
        {

            $calendar = new Calendar;
            $code = 201;

        }
        else
        {

            $calendar = $calendarRepository->find($calendarId);

        }

        $calendar->setTitle($title);
        $calendar->setDescription($description);
        $calendar->setStart(new DateTime($start));

        if($allDay)
        {

            $calendar->setEnd(new DateTime($start));

        }
        else
        {
                               
            $calendar->setEnd(new DateTime($end));

        }

        $calendar->setAllDay($allDay);
        $calendar->setBackgroundColor($backgroundColor);
        $calendar->setBorderColor($borderColor);
        $calendar->setTextColor($textColor);

        $manager->persist($calendar);
        $manager->flush();

        $message = 'OK';

    }
    else
    {

        //return new Response('Incomplete data', 404);
        $code = 404;
        $message = 'Incomplete data';

    }

    return new Response($message, $code);
}
 

Я не понимаю, где используется @ParamConverter.

Комментарии:

1. Здесь я рискну и предположу, что у вас может быть два маршрута, которые будут соответствовать этому uri, и вы смотрите не на тот, а другой на самом деле имеет параметр типа Calendar , который не может быть создан по какой-то неизвестной нам причине, поскольку мы не видим, чтометод; o)

2. Большое вам спасибо за проявленный интерес. У меня нет другого маршрута с тем же именем…

3. не пытаюсь придираться, но одно и то же имя маршрута почти не имеет значения, важен путь * / * uri . ваше сообщение об ошибке должно содержать местоположение, в котором возникает эта ошибка, пожалуйста, покажите полное сообщение об ошибке (включая трассировку стека).

4. У меня нет другого маршрута с тем же URL