Использование нормализатора не требуется.
Вы уже определили группы сериализации для свойств (get-product
и get-products
,).
Теперь вам просто нужно объявить они используются для каждой операции. Или определите контекст нормализации по умолчанию для ресурса и просто переопределите его для операции, которая должна использовать другую группу сериализации.
Например:
/**
* @ApiResource(
* normalizationContext={"groups"={"get-product"}},
* denormalizationContext={"groups"={"user", "user:write"}},
* collectionOperations={
* "get"={
* "security"="is_granted('ROLE_PRODUCTS')",
* "normalization_context"={"groups"={"get-products"}}
* },
* "post"={"security"="is_granted('ROLE_PRODUCTS_ADD')"}
* },
* itemOperations={
* "get"={"security"="is_granted('ROLE_PRODUCTS')"},
* "put"={"security"="is_granted('ROLE_PRODUCTS_EDIT')"},
* "patch"={"security"="is_granted('ROLE_PRODUCTS_EDIT')"},
* "delete"={"security"="is_granted('ROLE_PRODUCTS_EDIT')"},
* },
* )
*/
С помощью вышеизложенного вы по умолчанию используется группа сериализации get-product
для ответов, за исключением операции сбора GET
, которая использует группу сериализации get-products
.
(я обычно не пишу свою конфигурацию с помощью аннотаций, поэтому надеюсь, я не представил никакой неожиданной ошибки, но даже если есть ошибочная опечатка, это может поспорить, что вы идете.)