#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