我在 symfony 4.x 上,我为 easyadmin 附加组件创建了一个可重用的包。我创建了一个众所周知的实体,但是在提交数据时,我有一个未检测到的 HasLifecycleCallbacks 方法 _prePersist。
/**
* @ORM\HasLifecycleCallbacks()
* @ORM\Table
* @ORM\Entity
*/
class Post
{}
/**
* @ORM\PrePersist
*/
public function _prePersist()
{
dump($this);die;
}
您将需要更新 Bundle 的配置以注册您保存实体的文件夹以及可能的生命周期事件。src/Entity
不需要将它们放在this 中,因为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-services。
或者,您可以查看 Recipes,而不是将实体保留在包中,而是在安装包时将其复制到 src/ 目录中。由于配方是如何工作的,你的包需要是开源的,你必须为此包提供一个contrib-recipe。
编辑:另一种选择可能是为您的基本设置提供一个完整的框架,这样您就不必担心捆绑包和独立配置,而只需提供一个基本的入门应用程序和您认为有用的默认设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句