Menggunakan ekstensi Doktrin yang dapat dihapus dengan lembut dengan platform api

Saya sedang membangun API dengan Symfony 3.4 dan platform api. Saya ingin menggunakan penghapusan sementara pada entitas saya. Saya telah menginstal DoctrineExtensions dan 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

Dan entitas saya:

<?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;

    […]

Ini tidak bekerja. Saya sadar bahwa saya perlu mengkonfigurasi sesuatu (yaitu EventManager), tapi saya tidak tahu caranya. Inilah kesalahan yang saya dapatkan saat mencoba membuat entitas

Listener "SoftDeleteableListener" was not added to the EventManager!

Saya rasa saya telah melakukan semua yang dijelaskan halaman tersebut: Dokumentasi StofDoctrineExtensionsBundle

Bantuan apa pun akan sangat dihargai.


person Hakim    schedule 19.06.2018    source sumber


Jawaban (1)


Coba konfigurasi berikut di config.yml Anda

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

Catatan: Konfigurasi saya terlihat seperti:

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

Tampaknya Anda menyesuaikan mappings jadi pastikan Anda memuat kelas SoftDeleteable secara otomatis dengan benar.

person ReynierPM    schedule 19.06.2018