我使用的是symfony 4.x,我为easyadmin附加组件创建了可重用的包。我创建了一个众所周知的实体,但是在提交数据时,我有一个针对HasLifecycleCallbacks的方法_prePersist未被检测到。
cmd.Parameters.AddWithValue("@userType", userType);
/**
* @ORM\HasLifecycleCallbacks()
* @ORM\Table
* @ORM\Entity
*/
class Post
{}
答案 0 :(得分:0)
您将需要更新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读取和处理此配置,然后通过查看DoctrineExtension.php从这些配置值配置服务容器的方式。您可能可以省略配置文件,但是您的MyBundleExtension
需要从捆绑包中使用实体类更新Doctrine服务。
或者,您可以查看食谱,而不是将Entity保留在包中,只要安装了包,就将其复制到src /目录中。由于食谱的工作原理,您的软件包必须为此开源,并且您必须提供contrib-recipe for this bundle。
edit:另一个选择是为基本设置提供完整的框架,这样您就不必担心捆绑包和独立配置,而只需为基本的入门应用程序提供您认为有用的默认设置即可。 / p>