さて、モジュールで登録にフィールドを追加しようとしています。明らかに、属性を追加する必要があります。したがって、私の「インストール スクリプト」は実際には顧客エンティティへのアップグレードにすぎません。ただし、モジュールは有効になっていますが、フロント エンドを更新すると、インストール スクリプトが実行されません。私はサイコロを前に置いて、それが当たっているかどうかを確認しました。
他に約 7 つのスタック オーバーフローの質問を確認しましたが、それぞれのエラーはかなり明白でした。構成が含まれていたフォルダーと一致しないなどのこと。名前としてcustomer_setupを使用します。セットアップ ファイルのエラー。何度も何度も自分のコードを見てきましたが、何か小さなものが欠けていることを知っています。どこかでタイプミスがありました...しかし、私は今あまりにも多くの時間を無駄にしたので、素晴らしい人たちにそれを渡します.
構成.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-install-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";