Получить группы контекста сериализации в контроллере - PullRequest
0 голосов
/ 15 января 2020

У меня проблема в том, что, в зависимости от прав пользователя, используются разные контекстные группы, и я не могу найти место, где установлены контекстные группы.

Для устранения неполадок я ищу возможность чтобы выяснить, какую группу контекста сериализации использует вызов API. Это мой код:

<?php

namespace AppBundle\Controller\Api\Upload;


use AppBundle\Entity\Upload\UploadRepository;
use AppBundle\Entity\Upload\UploadType;
use AppBundle\Entity\Upload\UploadTypeRepository;

use Doctrine\ORM\ORMException;
use GuzzleHttp\Psr7\UploadedFile;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use AppBundle\General\Registry;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Serializer\Normalizer\DataUriNormalizer;
use AppBundle\Entity\Upload\Upload;
use AppBundle\Entity\Application\ApplicationData;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Serializer\Serializer;

/**
 * Class UploadController
 *
 * @package AppBundle\Controller\Api\Upload
 *
 * @ApiDoc()
 * @ApiResource(attributes={"pagination_enabled"=true})
 */
class UploadController extends Controller
     /**
     * Get an upload.
     *
     * @ApiDoc(
     *     resource=true,
     *     description="gets an upload",
     * )
     * @Route(
     *     name="getUploadSpecial",
     *     path="/fileuploads/{id}",
     *     defaults={"_api_resource_class"=Upload::class, "_api_item_operation_name"="getUpload"}
     * )
     * @Method("GET")
     *
     * @param Upload $data
     *
     * @return null|string
     *
     */
    public function getUploadAction($data)
    {
        // here I'd like to return the serialization context group
        return $data;
    }

Есть ли возможность получить контекстную группу сериализации в контроллере?

1 Ответ

0 голосов
/ 15 января 2020

Ну, похоже, контроллер не то место, где его можно найти. Лучше сделать дамп в src / Serializer / JsonEncoder. php в функции encode, прямо перед возвратом, вот так:

/**
 * {@inheritdoc}
 */
public function encode($data, $format, array $context = [])
{
    dump($data, $context);die;
    return $this->jsonEncoder->encode($data, $format, $context);
}
...