2

これを検索しようとしましたが、何も見つかりませんでした。プログラムで選択タイプのカスタム製品属性を作成する場合、Magento は常にeav/entity_attribute_source_tableをソース モデルとして割り当てます。

このデフォルトのソース モデルには 2 つの問題があります。

  1. データリストを1つずつ手動で入力する必要がある以外に、プログラムでどこかから取得したデータをフィールドに自動入力することはできません。

  2. 「default」または「default_value」を指定しましたが (値が存在することをデータベースで確認できます)、フィールドの最初の行はまだ空のままです。

デフォルトの source_model を選択タイプの独自のソース モデルに変更するにはどうすればよいですか?

ありがとうございました

4

3 に答える 3

3

探しているキーはsource、SQL セットアップで値を渡すことです。がEAV セットアップ オブジェクト$installerであることを確認してください。

セットアップ スクリプトで次のようにします。

$installer = $this;

$installer->starSetup();

// Setup customer multiselect attribute
$attr = array(
    'backend'      => 'eav/entity_attribute_backend_array',
    'input'        => 'multiselect',
    'label'        => 'Permissions',
    'note'         => 'Used for group-based frontend permissions.',
    'required'     => false,
    'sort_order'   => '1000',
    'source'       => 'eav/entity_attribute_source_table', // Change it here
    'user_defined' => true
);
$installer->addAttribute('customer', 'permissions', $attr);

// Add options for permissions
$options = array(
    'attribute_id' => $installer->getAttributeId('customer', 'permissions'),
    'value' => array(
        'place_order'    => array('Can Place Orders'),
        'view_catalog'   => array('Can View the Catalog'),
    )
);
$installer->addAttributeOption($options);

$installer->endSetup();

最終的には、ソース モデルはtoOptionArray()機能を提供するものであれば何でもよいと思います。

于 2013-10-16T23:50:12.563 に答える
0

これの良い例がMage_Customer、インストーラーにあります。mysql4-upgrade-1.5.9.9-1.6.0.0.php

その中で、国ソース モデルが顧客住所属性に割り当てられていますcountry_id

$installer->updateAttribute(
    'customer_address',
    'country_id',
    'source_model',
    'customer/entity_address_attribute_source_country'
);

これを、catalog_product、属性、およびソース モデルに変更します。

于 2013-10-16T19:02:21.580 に答える