我正在为有自己的eZPersistantObject的eZPublish编码一个扩展,所以它需要一个自己的数据库表。
有没有办法提供一种setup.php之类的东西,它在扩展激活时运行并创建表?
感谢您的回复。
发布于 2012-03-26 04:40:07
似乎在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__);即可。
如果您想要一些更干净的解决方案,您可以有一个包含数据库迁移脚本的目录和一个跟踪这些脚本中哪些脚本已经执行的表。对于每个请求,然后检查是否有新的迁移脚本,并在必要时执行。
发布于 2012-03-27 16:06:22
当涉及到安装扩展时,eZ Publish并不提供这样的功能(这并不是说你需要在数据库中进行更改才能做到这一点,只需要自动加载重新生成)。
关于您的问题,您唯一能做的就是在您的扩展中添加一个.dba文件,以便在您的管理界面中使用系统检查/升级时对其进行检查。可以使用bin/php中的ezsqldumpschema.php脚本生成该文件(您会注意到缺少了一些内容,例如字符集...)
如果您的扩展提供了管理界面,那么可以在每个视图脚本的开头添加一种pre_check函数。这将根据dba文件检查表是否存在,并在需要时创建它(或提示用户创建)。
https://stackoverflow.com/questions/9863570
复制相似问题