Magento不会运行我的安装脚本

时间:2013-04-23 13:54:04

标签: php magento zend-framework install

好的,所以我试图在我的模块注册中添加一个字段。显然我必须添加一个属性。所以我的“安装脚本”实际上只是对客户实体的升级。但是,该模块已启用,但当我刷新前端时,它将不会运行我的安装脚本。我已经在前面放了一个模具,看看它是否能够击中它而不是它。

我已经检查了大约7个其他堆栈溢出问题,每个错误都非常明显。配置不匹配它所在的文件夹。使用customer_setup作为名称。安装文件中的错误。我一遍又一遍地看着我的代码,我知道我错过了一些小事。在某个地方有些错字.....但是我现在浪费了太多时间,所以我把它交给你了不起的人。

的Config.xml

<config>
    <modules>
        <BlizzardLabs_Customer>
            <version>0.1.0</version>
        </BlizzardLabs_Customer>
    </modules>
    <global>
        <fieldsets>
            <customer_account>
                <flavour>
                  <create>1</create>
                  <update>1</update>
                </flavour>
            </customer_account>
        </fieldsets>
        <resources>
            <blizzardlabs_customer_setup>
                <setup>
                    <module>BlizzardLabs_Customer</module>
                    <class>BlizzardLabs_Customer_Model_Entity_Setup</class>
                </setup>
            </blizzardlabs_customer_setup>
        </resources>
    </global>
</config>

BlizzardLabs /客户/型号/实体/ Setup.php

class BlizzardLabs_Customer_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup {

  public function getDefaultEntities() {
    $entities = parent::getDefaultEntities();

    // Add flavour to customer attributes
    $entities['customer']['attributes']['flavour'] = array(
        'label' => 'Ice Cream Flavour',
        'visible' => true,
        'required' => true,
    );

    return $entities;
  }

}

BlizzardLabs /客户/ SQL / blizzardlabs_customer_setup / mysql4安装-0.1.0.php

Mage::log('Installing BlizzardLabs_Customer');

$installer = $this;
$installer->startSetup();
$installer->addAttribute('customer', 'flavour', array(
    'label' => 'Ice Cream Flavour',
    'type' => 'varchar',
    'input' => 'text',
    'visible' => true,
    'required' => true,
    'position' => 1,
));

$attrs = array('flavour');

foreach ($attrs as $item) {
  $attr = Mage::getSingleton('eav/config')->getAttribute('customer', $item);
  $attr->setData('used_in_forms', array('adminhtml_customer','customer_account_edit','customer_account_create'))->save();
}

$installer->endSetup();

echo "information added to database";

2 个答案:

答案 0 :(得分:1)

所以我明白了。我不确定这是否是版本的东西,但为了彻底我使用的是magento 1.13。

这是我的问题:

<blizzardlabs_customer_setup>
</blizzardlabs_customer_setup>

需要:

  <blizzardlabscustomer_setup>  
  </blizzardlabscustomer_setup>

我当然必须编辑我的文件夹才能与之匹配。所以新路径是/BlizzardLabs/Customer/sql/blizzardlabscustomer_setup/<file_name>

此外,为了后人,使用“customer_setup”将无法正常工作,因为这会与Magento基类发生冲突而不会运行安装脚本。

我不确定这是一个magento版本问题还是旧版本,但在_setup之前你不能有任何下划线。谢谢!

答案 1 :(得分:0)

BlizzardLabs/Customer/sql/mysql4-install-0.1.0.php

不应该这样(在我至少写过的每个模块中)

BlizzardLabs/Customer/sql/customer_setup/mysql4-install-0.1.0.php

或者可能(以上可能与mage_customer冲突)

BlizzardLabs/Customer/sql/blizzardlabs_customer_setup/mysql4-install-0.1.0.php