2012-03-25 117 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文件檢查表存在並根據需要創建它(或提示用戶)。