Estou tentando criar um módulo de back-end, em que na minha página de edição eu uso o admin-2column-left
layout.
Quero ter um formulário em cada guia, mas não entendo como posso fazer isso.
Idealmente, eu gostaria de saber como atribuir um formulário diferente uiComponents
a diferentes guias, ou como posso definir um uiComponent
para o meu formulário, mas poder atribuir qual conjunto de campos vai para qual guia.
Minha situação específica, que provoca essa pergunta, é que eu quero ter um formulário padrão em uma guia (várias entradas de texto) e em outra guia, quero ter um dynamicRows
componente de interface do usuário. Chamamos essas guias de itens principais e de linha.
Atualmente, estou implementando isso da seguinte maneira: Main é definido no
_prepareForm
método dentro de seu bloco, que é uma extensão de classeForm\Generic
. Este formulário aparece e funciona bem até eu adicionar as linhas dinâmicas.
Meu arquivo de layout possui código para adicionar a guia Principal e atribuir um bloco de conteúdo. Além disso, ele possui um contêiner chamado line_items
, que contém um uiComponent
para o formulário que contém linhas dinâmicas.
A guia Itens de linha é criada no _beforeToHtml
método de Widget\Tab
, e seu conteúdo é atribuído usando uma chamada para getChildHtml
em um contêiner de line_items.
A guia funciona e é preenchida com a estrutura correta, permitindo adicionar e remover linhas.
O problema é que, quando envio a página, apenas as entradas na guia Itens de linha são enviadas.
Portanto, sei que não o configurei corretamente e preciso de alguma maneira de instruí-lo a rastrear e enviar todos os elementos do formulário. A maior parte dessa implementação deriva de minhas tentativas de fazer engenharia reversa na configuração do formulário Atributos do produto da categoria, que é semelhante ao que eu quero fazer.
Alguém tem idéia sobre isso?
Respostas:
Use o código a seguir para criar guias com um único formulário usando o UI-Component
Crie um elemento de formulário
Este código exibirá 2 guias no formulário com os campos de formulário associados.
Espero que esta solução funcione para você
fonte