2012-03-25 118 views
0

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

有没有什么办法可以提供一种setup.php或者什么,它在扩展激活时运行并创建表?

感谢您的回复。

回答

0

好像在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__);即可。

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

2

eZ Publish在安装扩展时并没有提供这样的功能(并且这不是说你需要改变数据库中的东西来做到这一点,只需要自动加载再生)。

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

如果你的扩展提供了一个管理界面,在每个视图的脚本开始处添加一种pre_check功能。这应该根据dba文件检查表存在并根据需要创建它(或提示用户)。