【问题标题】:eZPublish Extension setup scripteZPublish 扩展设置脚本
【发布时间】:2012-03-25 20:07:57
【问题描述】:

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

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

感谢您的回复。

【问题讨论】:

    标签: php ezpublish


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      似乎在您的 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__);

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-10
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多