Я использую API Platform 2.0 с Symfony 3.1.
Я следовал документации WIP для условного добавления групп в контекст сериализации. Для этого я украсил ContextBuilder.
Это хорошо работает для установки некоторых групп на основе зарегистрированного пользователя.
Но теперь я дополнительно хочу добавить несколько групп в зависимости от запрошенного элемента ресурса — поэтому мне нужно, чтобы он был доступен как объект, уже извлеченный из слоя постоянства.
Что-то вроде этого:
public function createFromRequest(Request $request, bool $normalization, array $extractedAttributes = null) : array {
/* @var $currentUser User */
$currentUser = $this->tokenStorage->getToken()->getUser();
/* @var $requestedProduct Product */
$requestedProduct = $this->getRequestedItem();
if ($product->getAuthoringOrganization() === $currentUser->getOrganization() {
$context['groups'][] = 'api_products_get_item_current_user_is_owner';
}
return $context;
}
Боюсь, я не могу получить запрошенный элемент / коллекцию в ContextBuilder. Если это так, я был бы очень рад получить совет о том, где строить свои группы сериализации.
В EventListener я могу сделать это, чтобы получить то, что я назвал «$ requiredProduct» здесь:
$subject = $event->getControllerResult())
Большое спасибо за вашу помощь.
Приветствия Бен
Это доступно из атрибутов запроса:
$request->attributes->get('data');
Других решений пока нет …