Magento 2: добавление дерева рендеринга для дерева категорий с помощью модальной кнопки

13

Я пытаюсь разместить ввод категорий для своей пользовательской формы с помощью однокомпонентной формы.

введите описание изображения здесь

Я могу создать выпадающий список, но как мне создать кнопку и открыть из нее новый модал?

Могу ли я создать кнопку с помощью uicomponent и открыть модальное из нее. Я хочу кнопку , а не в новой категории я хочу , чтобы добавить кнопку выбрать продукты и хочу добавить показать список продуктов из выбранных категорий в сетке.

Вот 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>
Priyank
источник
Пока я не могу понять, что там, и, возможно, придумать ответ, я могу порекомендовать вам взглянуть на Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Categoriesурок. Именно он добавляет селектор дерева категорий на экран добавления / редактирования товара. Может быть, вам больше повезло, понимая, что там.
Мариус
@Marius Я смотрю на то же самое и выглядит так, это лучший способ сделать это.
Приянк
Эй, я думаю, что добавление модификаторов используется только для формы продукта, и очень трудно добавить его для пользовательской модели, после того, как я посмотрел его в течение 3 дней, я сошел с ума. Я просто получаю
неверное
Как здесь работают выбранные опции?
Амрит Пал Сингх

Ответы:

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
меня не беспокоит то, как я должен создать дерево. Мой вопрос заключается в том, чтобы создать кнопку рядом с раскрывающимся списком, как показано на моем снимке экрана, открыть модальное окно и показать в нем сетку списка продуктов.
Приянк
Как получить выбранные варианты в этом?
Амрит Пал Сингх