Php eZPublish扩展设置脚本

Php eZPublish扩展设置脚本,php,ezpublish,Php,Ezpublish,我正在为eZPublish编写一个扩展,它有一个自己的eZPersistantObject,所以它需要一个自己的数据库表 有没有办法提供一种setup.php之类的东西,它在扩展激活时运行并创建表 感谢您的回复。在CMS中安装扩展时,您还需要手动执行进一步的步骤,如更改数据库。我认为eZPublish不支持这种设置 当然,您可以手动执行这类操作,比如在每个请求上执行创建表(如果不存在)。肮脏的解决方案:将setup.php放在扩展文件夹中的某个地方,使其可写,在第一次执行后,只需将其删除即可。只

我正在为eZPublish编写一个扩展,它有一个自己的eZPersistantObject,所以它需要一个自己的数据库表

有没有办法提供一种setup.php之类的东西,它在扩展激活时运行并创建表


感谢您的回复。

在CMS中安装扩展时,您还需要手动执行进一步的步骤,如更改数据库。我认为eZPublish不支持这种设置

当然,您可以手动执行这类操作,比如在每个请求上执行
创建表(如果不存在)
。肮脏的解决方案:将
setup.php
放在扩展文件夹中的某个地方,使其可写,在第一次执行后,只需将其删除即可。只需添加
unlink(_文件__)
setup.php
的末尾


如果您想要更干净的解决方案,您可以有一个包含数据库迁移脚本的目录和一个跟踪哪些脚本已经执行的表。然后在每个请求上检查是否有新的迁移脚本,并在必要时执行

eZ Publish在安装扩展时不提供这样的功能(并不是说您需要更改数据库中的内容才能执行此操作,只需要自动加载重新生成)

关于您的问题,您唯一能做的就是在扩展名中添加一个.dba文件,以便在管理界面中使用系统检查/升级时对其进行检查。可以使用bin/php中的ezsqldumpschema.php脚本生成该文件(您会注意到缺少一些内容,例如字符集,…)

如果您的扩展提供了管理界面,可以在每个视图脚本的开头添加一种pre_check函数。这应该根据dba文件检查表是否存在,并在需要时创建它(或提示用户创建)