eZPublish扩展安装脚本


eZPublish Extension setup script

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

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

感谢您的回复。

eZ Publish在安装扩展时没有提供这样的功能(如果说需要更改数据库中的内容,那就不是真的了,只需要自动加载重新生成)。

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

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

在CMS中安装扩展时,似乎还需要手动执行进一步的步骤,如更改数据库。看见http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Installation/Extensions所以我不认为eZPublish支持这种设置。

当然,您可以手动执行这样的操作,比如对每个请求执行CREATE TABLE IF NOT EXISTS。一个肮脏的解决方案:将setup.php放在扩展文件夹中的某个位置,使其可写,并在第一次执行后将其删除。只需在setup.php的末尾添加unlink(__FILE__);

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