Php Api平台:根据请求的资源项有条件地将组添加到序列化上下文

Php Api平台:根据请求的资源项有条件地将组添加到序列化上下文,php,symfony,api-platform.com,Php,Symfony,Api Platform.com,我正在使用API平台2.0和Symfony 3.1 我遵循WIP文档有条件地将组添加到序列化上下文中。为此,我装饰了ContextBuilder 这可以根据当前登录的用户设置一些组。 但现在我还想根据请求的资源项添加一些组,所以我需要这些组作为对象可用,已经从持久性层获取 大概是这样的: public function createFromRequest(Request $request, bool $normalization, array $extractedAttributes = nul

我正在使用API平台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中,我可以在此处获取我称为“$requestedProduct”的内容:

非常感谢你的帮助


Cheers Ben

可从请求属性中获得:

$request->attributes->get('data');

请参见

非常感谢,现在我想完成我的问题,看到您已经添加了拉请求讨论中的评论。非常感谢你的帮助!
$request->attributes->get('data');