Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Como deixar mestre detalhe gerado pelo studio responsivo? Olá pessoal. Gerei um form tipo mestre detalhe no studio. No formulário, em uma mesma linha estou tentando colocar dois campos para preenchimento da maneira abaixo, porém ele não fica responsivo da mesma forma como quando usamos addfield $table_general->addRowSet( new TLabel('Matricula Aluno'), $matricula_aluno, new TLabel('Email Aluno'), $email_aluno ); O uso do addField nesse caso da v...
FT
Como deixar mestre detalhe gerado pelo studio responsivo?  
Olá pessoal. Gerei um form tipo mestre detalhe no studio. No formulário, em uma mesma linha estou tentando colocar dois campos para preenchimento da maneira abaixo, porém ele não fica responsivo da mesma forma como quando usamos addfield

$table_general->addRowSet( new TLabel('Matricula Aluno'), $matricula_aluno, new TLabel('Email Aluno'), $email_aluno );

O uso do addField nesse caso da vários erros e não estou conseguindo implementar. Alguém pode me dar uma ajuda?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (13)


FT

Aqui está o print para melhor visualização do que está ocorrendo: https://prnt.sc/hvh8jh
PM

Acompanhando este tópico.
NR

Sugiro usar o BootstrapFormBuilder. Para separar o detail do master você pode usar labels, conforme exemplo abaixo:
adianti.com.br/framework_files/tutor/index.php?class=FormBuilderView
FT

Obrigado Nataniel, estou usando, porém apesar dos campos estarem responsivos, quando a tela é reduzida os campos não ficam listados um em cima do outro.. eles continuam ficando um do lado do outro (creio que é por causa do addRowSet) - além disso está dando o erro Warning: Invalid argument supplied for foreach() in C:xampphtdocsatendimentolibadiantiwrapperBootstrapFormBuilder.php on line 478

aqui está o código: https://pastebin.com/9LPMXuKj
e um print: https://prnt.sc/hwd7zg

creio que o addfield seria o melhor, por ser responsivo, no entanto dá vários erros, penso que ele é incompatível com alguma parte do mestre detalhe gerado no estúdio.

LC

AC
NR

Felipe, você está usando a BootstrapFormBuilder, mas adicionando uma tabela dentro dela, o que acaba "limitando" o controle da classe sobre os campos e com isso também sobre a responsividade. Use a função addFields(não confundir com addField):
  1. <?php
  2. $this->form = new BootstrapFormBuilder('form_SolicitacaoAluno');
  3. $cod_aluno = new  ">TDBSeekButton('cod_aluno''Dados_Fei_T''form_SolicitacaoAluno''FiAluno''Nome''cod_aluno''nome_aluno');
  4. $nome_aluno = new TEntry('nome_aluno');
  5. $matricula_aluno = new TEntry('matricula_aluno');
  6. ...
  7. // adicionar campos com a funcao addFields
  8. $this->form->addFields([new TLabel('Cod Aluno')],[$cod_aluno]);
  9. $this->form->addFields([new TLabel('Nome aluno')],[$nome_aluno],[new TLabel('Matricula aluno')],[$matricula_aluno]);
  10. // label para separar detalhes
  11. $label1 = new TLabel('Mensagem''#7D78B6'12'bi');
  12. $label1->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
  13. $this->form->addContent([$label1]);
  14. // detail fields
  15. $detail_id_mensagem = new THidden('detail_id_mensagem');
  16. $detail_usuario = new THidden('detail_usuario');
  17. $detail_conteudo = new TText('detail_conteudo');
  18. $this->form->addFields([new TLabel('Conteudo')],[$detail_conteudo]);
  19. // grid
  20. $this->detail_list = new BootstrapDatagridWrapper(new TQuickGrid);
  21. ...
  22. // adicionar a grid ao form com a funcao addContent
  23. $this->form->addContent([$this->detail_list]);
  24. ?>
FT

Nataniel, muitíssimo obrigado pela rapidez em mostrar onde eu estava errado. Agora vai dar certo!!!!
FT

Deu super certo o mestre detalhe! apenas um detalhe que não estou conseguindo entender, ao criar vários 'itens' no detalhe, ele salva apenas o último item - na hora de editar ele traz apenas o último item inserido anteriormente. Seria possível ver o motivo pelo código? https://pastebin.com/BfVAYWe6
NR

Qual coluna é chave primária do model Mensagem?
FT

é id_mensagem .. é a chave primaria da tabela mensagem.
mesmo gerando o codigo pelo estudio, tenho o mesmo problema, devo estar fazendo alguma confusão na hora do banco.

Tenho duas tabelas, a solicitacaoaluno (mestre) e a mensagem (detalhe). Ao gerar pelo estudio, no "campo de ligação" eu coloco id_mensagem. Fiz a associação da solicitacaoaluno e da mensagem na model, mas o problema persiste.
FT

tanto a solicitacaoaluno quanto a mensagem ele está salvando corretamente no banco, o problema está apenas para mostrar na página do mestre detalhe.
NR

O campo de ligação deve ser o campo da tabela detalhe que faz a ligação com o mestre. Seguindo o padrão seria solicitacaoaluno_id:
  1. <?php
  2. //funcao onSave
  3. // linha 491 do pastebin
  4. $detail->id_mensagem $master->id_solicitacao;
  5. // como acho que deveria ser
  6. $detail->solicitacaoaluno_id $master->id_solicitacao;
  7. ?>

Se a coluna id_mensagem é chave primária, ela não pode repetir. Veja que está repetindo para todos os detalhes, pois está pegando o id do mestre.
FT

Muito obrigado Nataniel, era esse mesmo o problema, agora consegui entender como funciona.

Descobri um probleminha no meu código que, depois que o usuário salva, se ele atualizar a página outro registro é gerado. Deve ser alguma coisa com a id do mestre, vou quebrar a cabeça aqui ;)