Включите сериализатор Symfony jms при необходимости

У меня есть сериализатор jms, а в моем классе есть аннотация. У меня есть случай, когда мне нужно применить аннотацию сериализатора jms только в некоторых случаях. Как это сделать? Сначала я думаю, что нужно переместить аннотацию из класса сущности в uml, возможно, и создать некоторый обработчик, где я могу включить эту аннотацию для этой сущности, в остальное время jms не применимы к сущности

моя сущность

/**
 * @Annotation\ExclusionPolicy("all")
 */
class Application implements ContainsRecordedMessages
{
/**
 * @var int
 *
 * @Annotation\Groups({
 *      "get_application"
 * })
 * @Annotation\Expose()
 */
private $id;

/**
 * @var int
 *
 * @Annotation\Groups({
 *      "post_application"
 * })
 * @Annotation\SerializedName("company_id")
 * @Annotation\Expose()
 */
private $companyId;

/**
 * @var string
 *
 * @Annotation\Groups({
 *      "post_application"
 * })
 * @Annotation\SerializedName("channel_sale")
 * @Annotation\Expose()
 */
private $channelSale;

и у меня есть менеджер классов для этого объекта, где я хочу включить jms и отключить аннотацию сериализатора jms

class ApplicationManager
{
public function someFunction()
{
    $this->enableJmsForEntity(Application::class);
    //some logic
    //
    $this->disableJmsForEntity(Application::class);     
}
}

моя цель - этот сериализатор jms не работает в процессе сериализатора для ответа. Только в моей службе, где я создаю объект с функцией deserializer, аннотацией сериализатора jms для включения объекта. Потому что в этом старом проекте все ответы выглядят так

return $this->json($application, Response::HTTP_CREATED);

vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php:114
    protected function json($data, $status = 200, $headers = array(), $context = array())
{
    if ($this->container->has('serializer')) {
        $json = $this->container->get('serializer')->serialize($data, 'json', array_merge(array(
            'json_encode_options' => JsonResponse::DEFAULT_ENCODING_OPTIONS,
        ), $context));

        return new JsonResponse($json, $status, $headers, true);
    }

    return new JsonResponse($data, $status, $headers);
}

и после добавления аннотации jms у нас возникла проблема, ответ меняется ..

Не могли бы вы пояснить, в чем именно заключается ваша цель?

DrKey 27.07.2018 12:42

Я обновил свой вопрос

shuba.ivan 27.07.2018 12:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
234
0

Другие вопросы по теме