Я создаю 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
Любая помощь будет принята с благодарностью.




Попробуйте следующую конфигурацию на вашем 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.