Использование расширения Doctrine с возможностью мягкого удаления с помощью API-платформы

Я создаю API с Symfony 3.4 и API-платформой. Я хочу использовать мягкое удаление для своей сущности. Я установил DoctrineExtensions и StofDoctrineExtensionsBundle.

config.yml:

doctrine:
    dbal:
        connections:
            default:
               […]

    orm:
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                connection: default
                mappings:
                    […]
                filters:
                    softdeleteable:
                        class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                        enabled: true

И моя сущность:

<?php

namespace AppBundle\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * MyEntity
 *
 * @ORM\Table(name = "MyEntity", schema = "MyEntity")
 * @ORM\Entity(repositoryClass = "AppBundle\Repository\MyEntityRepository")
 * @Gedmo\SoftDeleteable(fieldName = "deletedAt")
 * @ApiResource
 */
class MyEntity
{
    /**
     * @var \DateTime
     * @ORM\Column(name = "deleted_at", type = "datetime")
     */
    private $deletedAt;

    […]

Это не работает. Я знаю, что мне нужно что-то настроить (а именно EventManager), но не знаю, как это сделать. Вот ошибка, которую я получаю, когда пытаюсь создать объект

Listener "SoftDeleteableListener" was not added to the EventManager!

Думаю, я сделал все, что объясняется на странице: Документация StofDoctrineExtensionsBundle

Любая помощь будет принята с благодарностью.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
8
0
2 631
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте следующую конфигурацию на вашем config.yml

doctrine:
    orm:
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                connection: default
                mappings:
                    […]
                filters:
                    softdeleteable:
                        class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                        enabled: true

stof_doctrine_extensions:
    default_locale: %locale%
    orm:
        default:
            softdeleteable: true

Примечание: Моя конфигурация выглядит так:

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
      default:
        auto_mapping: true
        filters:
            softdeleteable:
              class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
              enabled: true

Похоже, вы настраиваете свой mappings, поэтому убедитесь, что вы правильно загружаете классы SoftDeleteable.

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