Magento 2モーダルボタンによるカテゴリツリーレンダラー入力の追加


13

Uicomponentフォームを使用して、カスタムフォームのカテゴリ入力を配置しようとしています。

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

ドロップダウンを作成できますが、ボタンを作成してそこから新しいモーダルを開くにはどうすればよいですか?

uicomponentを使用してボタンを作成し、そこからモーダル開くことはできますか。私は、ボタンたい代わり新しいカテゴリー I、追加する製品の選択]ボタンをおよびshow追加したいリストから製品のを選択し、グリッド内のカテゴリ。

カテゴリ入力を作成するためのxmlは次のとおりです。

<field name="parent">
    <argument name="data" xsi:type="array">
    <item name="options" xsi:type="object">Magento\Catalog\Ui\Component\Product\Form\Categories\Options</item>
     <item name="config" xsi:type="array">
          <item name="label" xsi:type="string" translate="true">Parent Category</item>
          <item name="componentType" xsi:type="string">field</item>
          <item name="formElement" xsi:type="string">select</item>
          <item name="component" xsi:type="string">Magento_Catalog/js/components/new-category</item>
           <item name="elementTmpl" xsi:type="string">ui/grid/filters/elements/ui-select</item>
           <item name="dataScope" xsi:type="string">data.parent</item>
           <item name="filterOptions" xsi:type="boolean">true</item>
           <item name="showCheckbox" xsi:type="boolean">false</item>
           <item name="disableLabel" xsi:type="boolean">true</item>
           <item name="multiple" xsi:type="boolean">false</item>
           <item name="levelsVisibility" xsi:type="number">1</item>
           <item name="sortOrder" xsi:type="number">20</item>
           <item name="required" xsi:type="boolean">true</item>
           <item name="validation" xsi:type="array">
                  <item name="required-entry" xsi:type="boolean">true</item>
            </item>
            <item name="listens" xsi:type="array">
                  <item name="${ $.namespace }.${ $.namespace }:responseData" xsi:type="string">setParsed</item>
             </item>
      </item>
     </argument>
</field>

そこに何があるかを理解し、おそらく答えを出すまで、Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Categoriesクラスを見ることをお勧めします。カテゴリツリーセレクターを製品の追加/編集画面に追加するものです。たぶん、あなたはそこに何があるのか​​を理解する運がもっとあるでしょう。
マリウス

@Marius Yaは同じことを見て、それが最善の方法だと思う。
-Priyank

ちょっと私は修飾子を追加することは製品形態にのみ使用されると思います、そして、私がそれを約3日間探してからカスタムモデルに追加するのは非常に難しいと思います。無効なUIコンポーネント要素名: 'category_mapping_form'
Priyank

ここで選択したオプションはどのように機能しますか?
アムリトパルシン

回答:


3

私と一緒に働くこのコード:

     <container>
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
            <item name="formElement" xsi:type="string">container</item>
            <item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
        </item>
        </argument>
        <field name="category_ids">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="filterOptions" xsi:type="boolean">true</item>
                    <item name="chipsEnabled" xsi:type="boolean">true</item>
                    <item name="label" xsi:type="string">Categories</item>
                    <item name="disableLabel" xsi:type="boolean">true</item>
                    <item name="component" xsi:type="string">Magento_Catalog/js/components/new-category</item>
                    <item name="formElement" xsi:type="string">select</item>
                    <item name="levelsVisibility" xsi:type="number">1</item>
                    <item name="elementTmpl" xsi:type="string">ui/grid/filters/elements/ui-select</item>
                    <item name="options" xsi:type="array">
                            <item name="0" xsi:type="array">
                                <item name="value" xsi:type="number">1</item>
                                <item name="label" xsi:type="string" translate="true">Category 1</item>
                                <item name="optgroup" xsi:type="array">
                                    <item name="0" xsi:type="array">
                                        <item name="value" xsi:type="number">2</item>
                                        <item name="is_active" xsi:type="boolean">true</item>
                                        <item name="label" xsi:type="string" translate="true">Category 1.1</item>
                                    </item>
                                </item>
                            </item>
                            <item name="1" xsi:type="array">
                                <item name="value" xsi:type="number">2</item>
                                <item name="is_active" xsi:type="boolean">true</item>
                                <item name="label" xsi:type="string" translate="true">Category 2</item>
                            </item>
                    </item>
                   <item name="config" xsi:type="array">
                       <item name="dataScope" xsi:type="string">category_ids</item>
                   </item>
                </item>
            </argument>
        </field>
    </container>

これは結果です:

デモ

注:項目オプションを使用xsi:type="object"して、そのクラスを変更および宣言する必要があります。

お役に立てば幸いです!


1
私の懸念は、ツリーの作成方法ではありません。私の質問は、スクリーンショットに示すようにドロップダウンの横にボタンを作成し、そこからモーダルを開き、その中に製品グリッドのリストを表示することです。
Priyank 16

これで選択したオプションを取得する方法は?
アムリトパルシン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.