Как настроить «сущности» для «многоразового комплекта» в Symfony 4.x? - PullRequest
0 голосов
/ 02 апреля 2019

Я на Symfony 4.x, я создал многоразовый пакет для дополнения easyadmin.Я создаю хорошо известную сущность, но при отправке данных у меня есть метод _prePersist для HasLifecycleCallbacks, который не обнаружен.

/**
 * @ORM\HasLifecycleCallbacks()
 * @ORM\Table
 * @ORM\Entity
 */
class Post
{}
/**
 * @ORM\PrePersist
 */
public function _prePersist()
{
  dump($this);die;
}

1 Ответ

0 голосов
/ 02 апреля 2019

Вам нужно будет обновить конфигурацию вашего Bundle, чтобы зарегистрировать как папку, в которой вы храните свои сущности, так и, возможно, события жизненного цикла.При размещении их в src/Entity в этом нет необходимости, поскольку DoctrineBundle уже предоставляет для этого конфигурацию по умолчанию.Вот почему в вашем config/packages/doctrine.yaml у вас есть следующее:

doctrine:
    orm:
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

Вы должны отслеживать, как DoctrineBundle считывает и обрабатывает эту конфигурацию из Configuration.php , а затем, как Service Containerнастраивается из этих значений конфигурации, просматривая DoctrineExtension.php .Вы, возможно, можете опустить файл конфигурации, но вашему MyBundleExtension необходимо обновить Doctrine-сервисы с вашими классами сущностей изнутри комплекта.

В качестве альтернативы вы можете посмотреть на рецепты и вместо того, чтобы хранить сущность в вашем комплекте.скопируйте его в каталог src / всякий раз, когда ваш пакет установлен.Из-за того, как работают рецепты, ваш пакет должен быть с открытым исходным кодом для этого, и вы должны будете предоставить contrib-рецепт для этого пакета .

edit: другим вариантом может быть предоставлениеполный скелет для вашей базовой настройки, так что вам не нужно беспокоиться о пакетах и ​​независимой конфигурации, а просто предоставьте базовое начальное приложение с настройкой по умолчанию, которую вы считаете полезной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...