Я хочу создать пакет symfony для системы ролей и прав. Я хочу предоставить пользователю этой связки необходимые сущности. Я хочу сделать так, чтобы пользователь все еще мог редактировать сущности. Другими словами, я хочу переместить сущности из моего пакета в проект symfony конечного пользователя (src/Entity/). Таким образом, конечный пользователь все еще может настраивать объекты, если он или она пожелает это сделать.
Я довольно много гуглил, и единственное, что я нашел, это рецепты symfony и пользовательский класс symfony-maker. Проблема с рецептами в том, что вы должны получить одобрение Symfony. С другой стороны, комплект нестандартного производителя смущает меня до бесконечности.
Есть ли у кого-нибудь из вас несколько советов? Это мой первый раз, когда я делаю бандл Symfony, и хороших ресурсов не так много.
Спасибо @AlexandrePainchaud, я попробую, но у меня есть один вопрос. Вам по-прежнему нужно определять все свойства и методы в подклассе или вы просто делаете все свойства и методы защищенными в исходной сущности (те, что внутри моего пакета)?
я написал ответ, если он вам поможет, не забудьте отметить его как решенный;)
Есть причина, по которой вы не найдете много примеров такого рода вещей. Доктрина не подходит для такого рода вещей. Я вижу, вы приняли приведенный ниже ответ суперкласса, который приведен ниже, и это здорово. Но есть много ограничений на наследование Doctrine, с которыми вы, я полагаю, быстро столкнетесь. Внимательно прочитайте и поймите ссылку в ответе. Можете попробовать что-нибудь попроще для своего первого комплекта.
Я понимаю что ты имеешь в виду. Я думал просто создать объекты и включить их в пакет. Затем я хочу создать команду symfony, которая копирует файлы из моего пакета в папку Entities конечного пользователя. Что вы думаете об этом @Cerad?






Как я уже говорил, вы можете расширять сущности Doctrine (https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html)
/** @ORM\MappedSuperclass */
class A {
/** @ORM\Column(type = "integer") */
protected $id;
/** @ORM\Column(type = "string") */
protected $title;
}
/** @ORM\Entity */
class B extends A {
/** @ORM\Column(type = "string") */
protected $author;
}
Таким образом, вам не нужно определять все свойства.
Вы можете расширять сущности внутри вашего проекта!