2012-03-25 1 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 где-нибудь в своей папке расширения, сделайте его записью и после первого выполнения просто удалите его. Просто добавьте unlink(__FILE__); в конце setup.php.

Если вы хотите получить более чистое решение, у вас может быть каталог с сценариями миграции базы данных и таблица, которая отслеживает, какой из этих сценариев был выполнен. По каждому запросу вы затем проверяете, есть ли новые сценарии миграции и выполняются, если необходимо.

2

eZ Publish не предоставляет такую ​​возможность, когда требуется установить расширение (и это не так, чтобы сказать, что вам нужно что-то менять в базе данных, требуется только регенерация автозагрузки).

Что касается вашей проблемы, единственное, что вы можете сделать, это добавить файл .dba в расширение, чтобы он был проверен при использовании проверки/обновления системы в вашем интерфейсе администратора. Файл может быть сгенерирован с использованием сценария ezsqldumpschema.php в bin/php (вы заметите, что некоторые вещи отсутствуют, например, charset, ...)

Если ваше расширение предоставляет интерфейс администратора, не стесняйтесь для добавления функции pre_check в начале каждого сценария представления. Это должно проверять существование таблицы против файла dba и при необходимости создавать ее (или запрашивать у пользователя).