Я пытаюсь иметь модуль администратора, над которым я работаю, для создания новой таблицы в базе данных. Что я установил в
Приложение / код / местные / Foo / BAR / SQL / mysql4-установки-0.1.0.php
<?php $installer = $this; $installer->startSetup(); $installer->run(" DROP TABLE IF EXISTS {$this->getTable('notes')}; CREATE TABLE {$this->getTable('notes')} ( `ppr_id` int(11) NOT NULL AUTO_INCREMENT, `notesku` bigint(20) NOT NULL, `notestatus` smallint(16), PRIMARY KEY (`notes`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); $installer->endSetup();
и это в app / code / local / Foo / BAR / etc / config.xml
<?xml version="1.0"?> <config> <modules> <Foo_BAR> <version>0.1.0</version> </Foo_BAR> </modules> <global> <models> <BAR> <class>Foo_BAR_Model</class> <resourceModel>BAR_mysql4</resourceModel> </BAR> <BAR_myslq4> <class>Foo_BAR_Model_Mysql4</class> <entities> <BAR> <table>notes</table> </BAR> </entities> </BAR_myslq4> </models> <resources> <BAR_setup> <setup> <module>Foo_BAR</module> </setup> <connection> <use>core_setup</use> </connection> </BAR_setup> <BAR_write> <connection> <use>core_write</use> </connection> </BAR_write> <BAR_read> <connection> <use>core_read</use> </connection> </BAR_read> </resources> </global> <admin> <routers> <BAR> <use>admin</use> <args> <module>Foo_BAR</module> <frontName>bar</frontName> </args> </BAR> </routers> </admin> <adminhtml> <menu> <catalog> <children> <BAR_menu translate="title" module="BAR"> <title>BAR</title> <children> <list translate="title" module="BAR"> <title>Bar</title> <action>bar/index/index</action> </list> </children> </BAR_menu> </children> </catalog> </menu> </adminhtml> </config>
Случай, который я использую, соответствует этому примеру, когда моя компания имеет заглавные буквы, а имя модуля – в верхнем регистре. Я думаю, может быть, это меня отключает? Я понимаю, что как только я запустил страницу, которая попадает в этот модуль, она вызовет эту mysql для создания таблицы. Это верно? Есть ли что-то еще, что я должен делать?
Я очень благодарен за любую помощь в этом.
Если сценарий установки / обновления не запущен, выполните следующие действия:
Загружает ли Magento ваш модуль? Перейдите в раздел Система> Конфигурация> Дополнительно> Дополнительно и посмотрите, отображается ли ваш модуль в списке «Отключить вывод модуля». Если это не так, Magento не загружает ваш модуль вообще, и поэтому не будет запускать какие-либо скрипты настройки. Как отметил Cags в своем комментарии, вам понадобится файл xml в app/etc/modules
чтобы сообщить Magento о загрузке вашего модуля, если вы еще не создали его.
Убедитесь, что ваши ресурсы указаны в правильном месте в файле config.xml. Они должны находиться внутри <global>
(в вашем случае это кажется правильным).
Убедитесь, что установочные файлы находятся в правильном месте. Они должны быть в папке sql / внутри вашего модуля. Я думаю, что это ваша проблема, установочный файл в этом примере должен быть app/code/local/Foo/BAR/sql/BAR_setup/mysql4-install-0.1.0.php
Если вы проверили все вышеперечисленное, если у вас установлена IDE для отладки (и если вы делаете какую-либо серьезную работу Magento, сделайте себе одолжение и получите ее), установите контрольную точку в установочном файле и убедитесь, что она удар.
Проверьте таблицу core_resource
в базе данных для записи BAR_setup
. Если он есть, Magento запускает сценарий установки один раз и не запускает его снова. Если вам нужно снова запустить скрипт установки, удалите эту запись. Аналогично, вы можете изменить номера версий, если вам когда-либо понадобится перезапустить сценарии обновления (но убедитесь, что вы понимаете последствия запуска сценариев установки / обновления во второй раз, если вы это сделаете).
Если все остальное не удается проверить руководство Алана Шторма по отладке сценариев установки Magento .