動的キー=>カスタムモジュールの値ペアadminhtml設定


7

ユーザーが特定の配送方法に一意の「コード」を割り当てることができるadminhtml設定(system.xml)を使用したカスタムモジュールがあります。

次のようになります。

ここに画像の説明を入力してください

ご覧のとおり、要件は5つのマッピングのみであったため、これはかなり基本的です。これは、次のようなsystem.xmlを使用してこのように行われました。

<charge_1_method translate="label">
    <label><![CDATA[Charge <b style="color: #FF7F24;">#1</b> Method]]></label>
    <frontend_type>select</frontend_type>
    <source_model>mymodule_adminhtml/system_config_source_dropdown_shippingmethods</source_model>
    <sort_order>14</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>0</show_in_website>
    <show_in_store>0</show_in_store>
</charge_1_method>
<charge_1_code translate="label">
    <label><![CDATA[Charge <b style="color: #FF7F24;">#1</b> Code]]></label>
    <frontend_type>text</frontend_type>
    <sort_order>15</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>0</show_in_website>
    <show_in_store>0</show_in_store>
</charge_1_code>

... etc

これで要件が変更され、約25の異なる配送方法を一意のコードにマッピングする必要があります。そこで、設定のこの部分を動的に機能させたいと思います。

したがって、ユーザーは必要な数のキー==>値のペアマッチングを作成できます。

キーは、カスタムドロップダウンの選択ソースからの「配送方法」である必要があります。値は入力フィールドでなければなりません。

これをどのように達成できるかについてのアイデアはありますか?この例はありますか?

回答:


10

したがって、ユーザーは必要な数のキー==>値のペアマッチングを作成できます。

このため、私は「アレイ」フロントエンドモデルとバックエンドモデルをお勧めします。これらは製品のティア価格定義と同様に機能します。必要に応じて、key => valueマップに簡単に変換できる2列のマトリックスを作成します。フロントエンドモデルを少し拡張すると、配送方法にもドロップダウンを使用できます。

詳細はこちら:http : //www.integer-net.com/2015/03/17/how-to-create-tables-in-magento-system-configuration/

プレビュー

integer-net.comの例

あなたが必要なもの

  • 配列バックエンドモデルは、行列をシリアル化された配列として保存します。 <backend_model>adminhtml/system_config_backend_serialized_array</backend_model>
  • 列を定義するために拡張Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstractおよびオーバーライド_prepareToRender()するカスタムフロントエンドモデル。
  • Mage_Core_Block_Html_Selectカスタムドロップダウンを作成するために拡張するレンダラー。

2

追加する方法のチュートリアルは、動的な数のフィールドを持つsystem-> configセクションを作成することです。
この例は、各顧客グループのonフィールドを作成する方法を示していますが、ニーズに合わせて変更できます。
主なアイデアはfrontend_model、構成グループのカスタムを作成することです。呼び出されますfrontend_modelが、実際にはブロックです。
そのブロックには、_getFieldHtmlフィールドセットに必要なフィールド数を追加し、そのフィールドセットのHTMLを返すために使用できるメソッドが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.