Skip to content

Criação de sub-formulários

Criar a capacidade de um formulário conter sub formulários. Sub formulários permitem que um formulário seja feito a partir da composição de formulários existentes, além de inputs excluivos.

Método:

  • Modificar a classe Form, adicionando uma lista de SubForms
  • Criar a classe SubForm que representa um sub formulário, essa classe deve conter as seguintes propriedades:
    • placement
    • form
    • extra_description? (ver se é relevante ou não)
    • enabled
  • Criar uma tabela no banco que permita a existencia de subForms
    • Tabela subForm com as propriedades (id, id_form, placement, content_form, enabled)
  • Modificar controlador de formulário para inserção/atualização/leitura
    • Deve ser adicionado um vetor de subForms que contém o id_form do form contido e o placement
    • Para a interface ler todos os inputs eles devem realizar multiplas requisições (subForms +1)
  • Permitir que o placement seja compartilhado entre subForm e inputs
  • Criar Classe SubFormAnswer que determina que uma resposta de um formulário na realidade é subResposta de um Formulário
    • Ao inserir uma resposta, ela será inserida com o id_form do formulário contido
    • Isso dará a impressão de que é apenas uma resposta a mais para aquele formulário
    • Para diferenciar as respostas dos subForms para as respostas difetas, usa-se a SubFormAnswer
  • Criar Tabela no Banco subFormAnswer com as mesmas propriedades de FormAnswer, adcionando content_form
  • Modificar o controlador de resposta, que deverá receber um objeto de resposta mais complexo
    • Nesse objeto além das respostas dos inputs "padrão" também deverão vir as respostas dos subForms
    • A estrutura provavelmente será
{
    inputs: {
        "Resposta atual do form" : "values"
    }
    , subForms: {
        "id_sub_form1": {
            "resposta do sub_form_1": "Objeto resposta (igual a do inputs)"
         }
         , "id_sub_form2": {
            "resposta do sub_form_2": "Objeto resposta (igual a do inputs)"
         }
    }
}
Edited by Gianfranco Harres