Magento 2: quais são os benefícios do uso de componentes de grade da interface do usuário sobre o Grid.php padrão?

23

Então o Magento 2 introduziu os componentes da interface do usuário.

Um deles é a UI Component Grid (você pode encontrar mais informações aqui: Explicação da UI Component Grid no Magento 2 )

Ao criar um módulo personalizado, adotei o antigo método Magento 1, criei um Grid.phparquivo que lida com minha grade adminhtml.

Gostaria de saber quais são os benefícios de usar a grade de componentes da interface do usuário em vez do Grid.phpmétodo?

Raphael na Digital Pianism
fonte

Respostas:

23

Vou listar os que encontrei até agora.

  • extensibilidade. Você pode adicionar um novo xml para adicionar novas colunas.
  • configuração sobre código. Menos código para lógica, xmls mais declarativos.
  • menos tráfego na rede. O xml é transformado em um json e enviado ao navegador. Além disso, cada tipo de campo é enviado apenas uma vez ao navegador e a geração do formulário ocorre no cliente.
  • o novo sistema permite reordenação de colunas e economia de estado.

Fora do tópico: recebi "informações privilegiadas" de que o plano é mover todas as grades e formulários para os componentes da interface do usuário. Então você deve começar a usá-los.

Marius
fonte
Não tão fora do tópico que é uma grande informação, exatamente o tipo de necessidade de feedback I
Raphael em Digital pianismo
@ Rafael, você pode salvar os favoritos por ui_component. Configuração via XML Mais detalhes você pode ver na tabela ui_bookmark
mrtuvn
22

O @ raphael-at-digital-pianism me pediu para postar esta lista de coisas que acho erradas com o XML do componente da interface do usuário da grade adminhtml, então aqui vai:

O que há de errado com o XML do componente de interface do usuário da grade adminhtml?

  • Ciclo de feedback lento durante o desenvolvimento
  • Dificíl de entender
  • Difícil de depurar se algo der errado (principalmente apenas comparando com XML no núcleo)
  • Muitos detalhes de implementação expostos
  • Incentiva a copiar e colar
  • XML não foi feito para humanos lerem e escreverem
  • Difícil de testar
  • Não está claro quais outras opções estão disponíveis
  • Muitos clichês e magia (o pior dos dois mundos)
  • Acoplado à idéia de exibir dados da tabela do banco de dados
  • Muitas seqüências de nomes duplicadas no arquivo

"Crie uma solução melhor", você diz?

Bem, eu não tenho. Mas aqui está uma idéia aproximada de como eu, como desenvolvedor, gostaria de poder criar grades e formulários de administração.

  • Crie uma implementação de GridDataSourceInterface
  • O componente de grade usa um GridDataSourceInterface::getGridItemType()método para buscar um nome de classe ou nome de interface
  • A interface é refletida e todos os getters são usados ​​para determinar as possíveis colunas
  • Tipos de coluna são inferidos a partir dos tipos de retorno
  • Tipos que não podem ser inferidos automaticamente como tipos de coluna válidos são ignorados.
  • A GridDataSourceInterfaceinstância de implementação pode ser usada para configurar tipos de colunas e visibilidade não padrão usando métodos descritivos legais, quando necessário.

Os benefícios:

  • Definição assistida por IDE de grades (e formulários) por meio do preenchimento automático de métodos
  • Padrões sensíveis
  • Implementação independente
  • Para entidades simples , é necessário escrever muito pouco código
  • Comparado à abordagem XML, nenhuma perda de recursos
  • Extensibilidade via interceptores
  • Se as interfaces de classe forem concluídas, a definição de grades e formulários também poderá ser tão declarativa quanto XML (mas muito mais simples)
  • Corresponde ao "modo de pensar" do Magento 2s para classes de contrato de serviço
  • Nenhuma alteração na interação atual com o código de front-end necessário (o mesmo tráfego por cabo)
  • A classificação e a configuração da coluna de front-end podem continuar funcionando exatamente como agora
  • SEM MOAR XML

Com relação à pergunta original, não acho que usar o antigo estilo Magento 1 para criar adminhtml faça a interface certa.
Só estou defendendo que a nova declaração de grade baseada em XML deve ser substituída por algo melhor o mais rápido possível.

Vinai
fonte
? que é verdade que difícil de entender UI component.Are você pensou magento virá com outra solução na grade UI i componente futuro .Ele se tornar chefe de cache para mim ....... Donot encontrar qualquer blog adequada (:
Amit Bera