Создать новую таблицу из модуля magento - PullRequest
2 голосов
/ 06 января 2012

Я пытаюсь создать модуль администратора, над которым я работаю, создать новую таблицу в базе данных.Что я настроил в

app / code / local / Foo / BAR / sql / mysql4-install-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 для создания таблицы.Это верно?Есть ли что-то еще, что я должен делать?

Я очень ценю любую помощь с этим.

1 Ответ

13 голосов
/ 06 января 2012

Если скрипт установки / обновления не запущен, вот несколько вещей, которые нужно проверить:

  1. Magento загружает ваш модуль?Перейдите в Система> Конфигурация> Дополнительно> Дополнительно и посмотрите, отображается ли ваш модуль в списке «Отключить вывод модуля».Если это не так, Magento вообще не загружает ваш модуль и, следовательно, не запускает никаких скриптов установки.Как отметил Кэгс в своем комментарии, вам понадобится xml-файл в app/etc/modules, чтобы сообщить Magento о загрузке вашего модуля, если вы его еще не создали.

  2. Убедитесь, что ваши ресурсыобъявлены в правильном месте в файле config.xml.Они должны быть внутри тега <global> (в вашем случае это правильно).

  3. Убедитесь, что ваши установочные файлы находятся в правильном месте.Они должны быть в папке sql / внутри вашего модуля.Я думаю, что это ваша проблема, файл установки в этом примере должен быть app/code/local/Foo/BAR/sql/BAR_setup/mysql4-install-0.1.0.php

  4. Проверив все вышеперечисленное, если у вас есть IDE, настроенная для отладки (и если вывыполняете любую серьезную работу с Magento, сделайте себе одолжение и сделайте это), установите точку останова в файле установки и убедитесь, что она срабатывает.

  5. Проверьте таблицу core_resourceв базе данных для записи BAR_setup.Если он есть, Magento один раз запустил скрипт установки и больше не будет его запускать.Если вам нужно снова запустить скрипт установки, удалите эту запись.Аналогичным образом вы можете изменить номера версий, если вам когда-нибудь понадобится повторно запустить сценарии обновления (но убедитесь, что вы понимаете последствия запуска сценариев установки / обновления во второй раз, если вы это сделаете).

Если ничего не помогло, посмотрите Руководство Алана Шторма по отладке скриптов установки Magento .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...