Я создал форму ui_component .
Где мне нужно показать данные клиента, То же, что и Клиент Редактировать .
Но я могу показать свои данные из customer_entity
таблицы.
DataProvider.php
public function getData()
{
if (isset($this->loadedData)) {
return $this->loadedData;
}
// {Vendor}\{Module}\Model\GridFactory
// Returns Customer Resource Model
$items = $this->gridFactory->create()->getCollection();
$items->getSelect()->join('customer_entity_text as second', 'main_table.entity_id = second.entity_id');
//print_r($items->getData()); exit;
foreach($items as $contact){
$this->loadedData[$contact->getEntityId()]['contact'] = $contact->getData();
}
return $this->loadedData;
}
Я соединил
customer_entity_text
таблицу с моей фабрикой, чтобы отобразитьstatus
(атрибут клиента).Теперь Мой Второй атрибут - это
file
тип. Это вcustomer_entity_varchar
, во - первых , я думал , что добавить еще присоединиться , но я думаю , что это не хороший способ.
Итак, есть ли решение для этого? Мне нужно отобразить оба Customer Attribute
в моей форме.
ui_component
<field name="value">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string">Status</item>
<item name="visible" xsi:type="boolean">true</item>
<item name="dataType" xsi:type="string">text</item>
<item name="formElement" xsi:type="string">input</item>
<item name="source" xsi:type="string">contact</item>
</item>
</argument>
</field>
1). Выше компонент работает хорошо для статуса, но не для профиля изображения, который является тип изображения.
<field name="value">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string">Profile Image</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="path_controller"/>
</item>
</item>
</argument>
</field>
Даже если я удалю одно поле с тем же именем, form element
это не похоже на работу.
Посмотрите на field
имя, которое value
для статуса .
Если я буду использовать то же самое для изображения поля , чем компонент изображения исчезнет.
Примечание : я понятия не имею, почему Magento не позволяет использовать имя как value
.
Потому что я присоединился к коллекции, поэтому я получаю
value
в качестве ключа массива.
** Вопрос: Как я могу получить атрибуты клиента в этой форме без включения в коллекцию?
Кроме того, если у вас есть другое решение, чем большинство, также очень приветствуем. **
Ответы:
Вам необходимо создать свою пользовательскую таблицу со связью таблицы customer_entity, используя скрипт установки следующим образом:
Затем вам нужно загрузить модель клиента и присоединить вашу пользовательскую таблицу в функции getData () DataProvider.php следующим образом:
Теперь вы можете использовать имена полей в ui_component следующим образом:
Надеюсь, что это решение может решить вашу проблему.
источник