0

私は自分のニーズに合うようにmagentoのインストールをいくつか変更してきましたが、かなりの数の壁に出くわしています。これは、今後の質問の参考として必要な場合に備えて、私が行ったことの一部です。

Magento: クレジット カード フォームに新しいフィールドを追加する

Magento: 顧客情報フィールドに顧客の電話番号を表示する方法

Magento: 注文/支払い情報を Admin-BackEnd に追加する方法

Magento: order_payment と quote_payment にデータを保存する方法

そのため、カスタム属性の追加に関するいくつかのチュートリアルに従いましたが、スクリプトを実行して属性を正しいテーブルに追加する方法については困惑しています。

理由は次のとおりです。

すでにマジェントに付属している「電話」フィールドがいくつかのテーブルに表示されていることに気付きました。

eav_attributes (4 つのインスタンス) の場合、電話フィールドの attribute_id も他のテーブルに表示され、4 つのインスタンスすべてに表示されます。以前の質問で見たように、携帯電話番号フィールドを追加しましたが、必要な値を持つすべてのテーブルに表示する方法がわかりません。

現在、より詳細な情報を提供するためのリソースが少し限られていますが、誰かが私が説明しようとしていることを理解できる場合は、助けてください.

ありがとうございました。

4

1 に答える 1

0

答え

  • エンティティ モジュールのセットアップ リソース クラスによって実行されるセットアップ スクリプトを使用します。

なんで?

すべての EAV 属性とエンティティに共通のクラスとテーブル (eav_attributeテーブル と などMage_Eav_Model_Entity_Setup) がありますが、各 EAV エンティティには追加の属性情報テーブルがある場合があります。汎用設定リソース クラスMage_Eav_Model_Entity_Setupには、すべての汎用属性メタデータ (テーブル_prepareValues()内の列) のデフォルトを設定するメソッドがあります。eav_attributeの場合はMage_Customercustomer_eav_attributeなどもございます。Mage_Customerセットアップ リソース クラスはMage_Customer_Model_Entity_Setupこのメソッドをオーバーライドし、親メソッドを呼び出して、テーブルに格納されているメタデータの既定値を追加ますcustomer_eav_attribute

そのため、セットアップ リソース ファイルは任意のコンテキスト (セットアップ クラス インスタンス) で実行できますが、他のモジュールの EAV 構成を変更する場合は、正しいクラスで実行する必要があります。

<?php

$installer = Mage::getResourceModel('customer/setup','customer_setup');

$installer->startSetup();

$installer->addAttribute(
    'customer',
    'new_attribute_code',
    array('label'=>'Label','type' => 'text')
)

$installer->endSetup();

顧客/顧客住所フォームに追加する必要がある場合は、さらに作業が必要です。このタイプの作品のリファレンスは、 にありMage/Customer/sql/customer_setup/ます。

于 2012-08-16T14:34:32.257 に答える