Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何配置';实体';对于';可重复使用的捆绑包';在symfony4.x中?_Php_Symfony_Symfony4 - Fatal编程技术网

Php 如何配置';实体';对于';可重复使用的捆绑包';在symfony4.x中?

Php 如何配置';实体';对于';可重复使用的捆绑包';在symfony4.x中?,php,symfony,symfony4,Php,Symfony,Symfony4,我在symfony4.x上,我为easyadmin插件创建了一个可重用的包。我创建了一个众所周知的实体,但在提交数据时,我为HasLifecycleCallbacks创建了一个未检测到的方法_prePersist /** * @ORM\HasLifecycleCallbacks() * @ORM\Table * @ORM\Entity */ class Post {} 您将需要更新捆绑包的配置,以注册保存实体的文件夹以及可能的生命周期事件。当将它们放置在src/Entity中时,这是不

我在symfony4.x上,我为easyadmin插件创建了一个可重用的包。我创建了一个众所周知的实体,但在提交数据时,我为HasLifecycleCallbacks创建了一个未检测到的方法_prePersist

/**
 * @ORM\HasLifecycleCallbacks()
 * @ORM\Table
 * @ORM\Entity
 */
class Post
{}

您将需要更新捆绑包的配置,以注册保存实体的文件夹以及可能的生命周期事件。当将它们放置在
src/Entity
中时,这是不必要的,因为已经为其提供了默认配置。这就是为什么在您的
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如何从中读取和处理此配置,然后查看如何从这些配置值配置服务容器。您可能可以省略配置文件,但您的
MyBundleExtension
需要从包内使用实体类更新条令服务

或者,您可以查看配方,而不是将实体保留在捆绑包中,在安装捆绑包时将其复制到src/目录中。由于菜谱是如何工作的,因此您的包需要是开源的,并且您必须提供一个


编辑:另一种选择是为基本设置提供完整的框架,这样您就不必担心捆绑包和独立配置,而只需提供一个基本的入门应用程序和您认为有用的默认设置。

请提供更多详细信息。如何持久化对象?这个预科生挂钩在哪里?应该在什么时候触发?如何触发?例如,这是一个条令事件还是应该与EasyAdmin捆绑包的事件挂钩(请参阅)?您是否已使用
bin/console debug:events
检查事件是否已正确注册?确定创建post时,我有一个slug字段,我希望使用生命周期事件在实体中的方法中自动管理该字段。我总是这样做,它总是走,但当我将代码从src/移动到lib/acmebundle文件夹时,它就不再工作了。由于slug字段是必需的,因此表单的验证失败。在src/Entity中有效,而在lib/AcmeBundle/Entity中无效。您能给我一个解决方案1和3的演示示例吗?至于解决方案3,您可以举个例子。只需创建一个您认为适合您的“项目框架”想法的小应用程序,创建一个Github repo,然后通过PackageGist提供一个包,然后您就可以根据此框架构建新项目,如文档中所述,使用
composer create project…
。如果您不想创建一个项目,那么解决方案1就有点棘手(请参见:),这需要一些工作,我认为我无法在不花费太多时间的情况下充分解释它。我建议把两个链接的文件作为一个基础,以及
doctrine:
    orm:
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App