Eu criei o formulário ui_component .
Onde eu preciso mostrar os detalhes do cliente, Igual à Edição do Cliente .
Mas, eu posso mostrar seus dados da customer_entity
tabela.
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;
}
Associei a
customer_entity_text
tabela à minha fábrica para exibirstatus
(Atributo do cliente).Agora, meu segundo atributo é do
file
tipo É emcustomer_entity_varchar
, primeiro lugar eu pensei que para adicionar outro juntar-se, mas eu acho que não é o bom caminho.
Então, existe alguma solução para isso? Eu preciso exibir os dois Customer Attribute
no meu formulário.
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) O componente acima está funcionando bem para Status, mas não para a Imagem de perfil que é do tipo Imagem.
<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>
Mesmo se eu remover um campo com o mesmo nome form element
, isso não parece funcionar.
Dê uma olhada no field
nome que é value
para Status .
Se eu usar a mesma coisa para imagem campo de componente de imagem está desaparecido.
Nota : Não faço ideia por que o Magento não permite usar o nome como value
.
Porque eu entrei na coleção, então estou recebendo
value
como a chave da matriz.
** Pergunta: Como posso obter atributos de clientes neste formulário sem ingressar na coleção?
Além disso, se você tiver outra solução além da maioria, também será bem-vinda. **
Respostas:
Você precisa criar sua tabela personalizada com o relacionamento da tabela customer_entity usando o script de configuração da seguinte maneira:
Então você precisa carregar o modelo do cliente e ingressar na sua tabela personalizada na função getData () do DataProvider.php da seguinte maneira:
Agora você pode usar nomes de campos em ui_component da seguinte maneira:
Espero que esta solução possa resolver seu problema.
fonte