Вы возвращаете ответ json из ответа, поэтому вместо него следует использовать JsonResponse:
use Symfony\Component\HttpFoundation\JsonResponse;
//...
return new JsonResponse([
'villa' => $villa,
]);
Однако ваш массив содержит объект $ villa , а не массив .Поэтому вы должны либо создать новый массив из объекта villa , либо сериализовать его.
Самый простой способ - создать новый массив из виллы:
public function getVilla($id, EntityManagerInterface $em): Response
{
$repository = $em->getRepository(Villa::class);
$villa = $repository->findOneBy(['id' => $id]);
if($villa){
$villaArray['id'] = $villa->getId();
$villaArray['cityNameOrSomething'] = $villa->getCityName();
//Do the same for other attribute you want to get in your json
}else{
$villaArray = [];
}
return new Response([
'villa' => $villaArray,
]);
}
Другой способ - использовать компонент serializer , чтобы вам не нужно было создавать новый массив.Просто следуйте Документации Symfony по использованию, чтобы найти тот, который вы хотите использовать.