Как создать окно выбора компонента пользовательского интерфейса формы с источником, чтобы заполнить поле выбора

7

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

Как-то так я думал сработает но это не так

<field name="formats">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="dataType" xsi:type="string">text</item>
                <item name="disabled" xsi:type="boolean">false</item>
                <item name="label" xsi:type="string" translate="true">formats</item>
                <item name="formElement" xsi:type="string">select</item>
                <item name="enabled" xsi:type="boolean">false</item>
                <item name="source" xsi:type="string">Magento\Catalog\Model\Product\AttributeSet\Options</item>
                <item name="dataScope" xsi:type="string">formats</item>
            </item>
        </argument>
    </field>

Спасибо

stewrat
источник

Ответы:

19

Вы можете добавить, как это

<field name="formats">
    <argument name="data" xsi:type="array">
        <item name="options" xsi:type="object">Magento\Catalog\Model\Product\AttributeSet\Options</item>
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Formats</item>
            <item name="formElement" xsi:type="string">select</item>
            <item name="source" xsi:type="string">modulename</item>
            <item name="dataScope" xsi:type="string">formats</item>
            <item name="default" xsi:type="string">0</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>
Priyank
источник
Genius! Могу я спросить, откуда вы взяли эту информацию для дальнейшего использования?
Stewrat
Вы в нужном месте, братан. Просто продолжайте искать :)
Priyank
@Priyank , где это modulenameот <item name="source" />определяется? Я попробовал мой из module.xml, rout.xml, но это не работает. Я получаю это сообщение об ошибке: prntscr.com/d9c73e
Василий Бурлаку
@Vasilii, если ваше имя по модулю - это имя вашего модуля, который вы создали. Например, если для модуля Magento_Catalog каталог является именем модуля.
Приянк
@Priyank не работает так, как вы описали. Интересно, если источник делает ссылку на модель модуля или другой файл .php, который содержит опции выбора. PS Я пытаюсь это с multiselectтипом для formElement.
Василий Бурлаку
1

Этот подход более распространен, по крайней мере, в Magento 2.3:

<field name="image_overlay_art" sortOrder="40" formElement="select">
    <settings>
        <dataType>int</dataType>
        <label translate="true">Show Art on Image Overlay</label>
    </settings>
    <formElements>
        <select>
            <settings>
                <options class="\Magento\Config\Model\Config\Source\Yesno"/>
            </settings>
        </select>
    </formElements>
</field>
bassplayer7
источник