2012-01-05 76 views
2

我想要一個管理模塊我正在創建數據庫中的新表。我已經安裝在從magento模塊創建一個新表

應用程序/代碼/本地/富/酒吧/ 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(); 

,這在應用程序/代碼/本地/富/酒吧/等/ 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來創建表格。那是對的嗎?還有什麼我應該做的?

我非常感謝任何幫助。

+0

觸發任何頁面應安裝您的模塊,因爲Magento在任何路由發生之前觸發模塊安裝/升級過程。如果沒有表出現,首先要檢查的是如果您的模塊安裝腳本已經運行,您可以通過檢查數據庫中的core_resources表來檢查代碼值爲BAR_setup的行。 – 2012-01-05 21:17:26

+0

謝謝卡格。我檢查了core_resources表,它沒有顯示在那裏。 – Zac 2012-01-05 21:36:46

+0

您是否在應用程序/ etc/modules /中創建了一個文件來啓用您的模塊? – 2012-01-05 21:50:51

回答

13

如果安裝/升級腳本未運行,這裏有一些事情要檢查:

  1. 是Magento的加載你的模塊?進入系統>配置>高級>高級,看看你的模塊是否出現在「禁用模塊輸出」列表中。如果沒有,Magento根本不會加載你的模塊,因此不會運行任何安裝腳本。正如Cags在他的評論中指出的那樣,如果你還沒有創建一個,你需要一個app/etc/modules的xml文件來告訴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運行一次安裝腳本,不會再運行它。如果您需要再次運行安裝腳本,請刪除此記錄。同樣,如果您需要重新運行升級腳本,則可以更改版本號(但要確保您瞭解如果您再次運行設置/升級腳本的後果)。

如果一切都失敗檢查出Alan Storm's guide to debugging Magento setup scripts