Компонент загрузчика Magento 2.2

Я изучаю Magento2.2 и пытаюсь использовать компонент загрузчика, как указано здесь, в документации.

http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-fileuploader.html

Я хочу передать атрибут продукта компоненту formUploader, используя formData.

Ниже мой XML-файл.

<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="file_uploader_attribute_fieldset">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">Documentation Files</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="opened" xsi:type="boolean">true</item>
                <item name="sortOrder" xsi:type="string">2</item>
                <item name="canShow" xsi:type="boolean">true</item>
                <item name="componentType" xsi:type="string">fieldset</item>
            </item>
        </argument>
        <!-- Pass in our own preview template with ability to delete. -->
        <field name="file_uploader_attribute">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="string">Sound Check</item>
                    <item name="visible" xsi:type="boolean">true</item>
                    <item name="formElement" xsi:type="string">fileUploader</item>
                    <item name="uploaderConfig" xsi:type="array">
                        <item name="url" xsi:type="url" path="productfileuploader/component/"/>
                        <item name="formData" xsi:type="object">
                            .... ??? ....
                        </item>
                    </item>
                    <item name="isMultipleFiles" xsi:type="boolean">true</item>
                    <item name="component" xsi:type="string">Packt_ProductFileUploader/js/file-uploader</item>
                    <item name="previewTmpl" xsi:type="string">Packt_ProductFileUploader/preview</item>
                    <item name="template" xsi:type="string">Packt_ProductFileUploader/uploader</item>
                </item>
            </argument>
        </field>

    </fieldset>

</form>

Я пробовал DataSource, но не смог заставить его работать.

Какие-нибудь мысли ?


person dee    schedule 24.11.2017    source источник


Ответы (1)


По моему опыту, поиграв с этим несколько часов, formData может принять следующее:

Массивы:

<item name="formData" xsi:type="array">
    <item name="some_value" xsi:type="string">Hard Coded Value</item>
    <item name="some_other_value" xsi:type="string">Other Hard Coded Value</item>
</item>

Объекты:

Примечание: при передаче класса свойства будут преобразованы в значения, причем имя свойства будет «входом», а его значение — значением.

<item name="formData" xsi:type="object">Vendor\Module\Model\formData</item>

И класс выглядит так:

class formData {

     public $dynamicProperty;

     public function __construct()
     {
         $this->dynamicProperty = '10';
     }
}

Затем вы можете передать все, что хотите, в конструктор, используя внедрение зависимостей, чтобы установить свойства внутри класса. Затем эти свойства будут преобразованы в аргументы, которые будут отправлены в запросе.

Приведенный выше класс добавит в запрос следующие данные:

Array
(
    [dynamicProperty] => 10
)
person TomS    schedule 15.11.2018