FOSRestBundle возвращает пустой контент

Я реализую FOSUserBundle в моем проекте. Я хочу, чтобы базовое действие GET возвращало объект json сущности ContactList.

контроллер:

class ContactListController extends FOSRestController
{
use ViewContextTrait;
const DEFAULT_GROUPS = ['organization_list'];
/**
* @ParamConverter("contactList", class="SchemaBundle:ContactList")
* @param ContactList $contactList
* @return Response
*/
public function getAction(ContactList $contactList)
{
return $this->handleView($this->viewWithContext($contactList, Response::HTTP_OK));
}

Черта характера:

use FOS\RestBundle\Context\Context;
use FOS\RestBundle\View\View;
trait ViewContextTrait
{
public function viewWithContext($data, $statusCode = null, $groups = self::DEFAULT_GROUPS)
{
$context = new Context();
$context->setGroups($groups);
return View::create($data, $statusCode)->setContext($context);
}
}

мой config.yml:

fos_rest:
routing_loader:
include_format: false
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
param_fetcher_listener: true
view:
view_response_listener: 'force'
format_listener:
rules:
- { path: '^/api', priorities: ['json'], fallback_format: json, prefer_extension: false }

Эта проблема: Когда я звоню по этому маршруту через почтальона (/api/contact-list/1Я всегда получаю {} для моего содержания в объекте ответа.

Это сбрасываемый ответ:

Чего мне не хватает, чтобы вернуть сериализованную сущность ContactList с контекстной группой в мой ответ?

0

Решение

Решение:
Прежде всего, мои аннотации не были включены. Я должен был добавить это к моему config.yml:

framework:
serializer:
enabled: true
enable_annotations: true

Затем я забыл, что ранее включил сериализатор JMS в свой проект. Видимо ViewHandler для Rest Bundle имеет порядок по умолчанию для сервисов сериализатора что он использует. Мне пришлось включить это в мой config.yml:

fos_rest:
service:
serializer: fos_rest.serializer.symfony

По умолчанию FOSRest использовал JMS Serializer, который не был настроен должным образом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]