Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Recarregar TPage Pai após um "parent::closeWindow()" em TWindow ...
MA
Recarregar TPage Pai após um "parent::closeWindow()" em TWindow  
Estou fazendo uma ferramenta para a ouvidoria do município onde trabalho.
Em uma das telas, os atendentes da ouvidoria irão poder realizar uma nova movimentação no chamado, adicionando informações referente a essa movimentação (informações estas que são inseridas em uma classe TWindow)

após clicar no botão de salvar, a Twindow fecha, mas o datagrid contendo a lista de movimentações não é atualizado (pois eu teria que passar para a classe o método onEdit com a key do chamado que teve uma nova movimentação

Como devo proceder? O "parent::closeWindow()" somente fecha a Janela.... tem como eu passar que ele além de fechar a janela deve recarregar a TPage?

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 (10)


FC

Acredito que nem precise do parent::close.... basta

TApplication::executeMethod('SuaClasse','onReload');
GM

Boa tarde.
Já passei por isso, tente assim: no método que você recupera a $key, faça um script
  1. <?php
  2. TScript::create("
  3. setTimeout(function() { 
  4.         var button = $('.ui-dialog-titlebar-close').get(0); // botao de fechar a window
  5.          $(button).attr('onclick', 'event.preventDefault(); __adianti_load_page(\"index.php?class=Window&method=onReload&key=".$key."\"); // url para voltar
  6.  ');
  7. }, 100); // delay pra dar tempo de a window ser criada
  8.                 
  9. ");
  10. ?>


Nos parametros você passa a classe que quer voltar, o método, e o resto que quiser, como a $key.
Espero ajudar.
MA

Opa! Legal Felipe!

agora ta indo, ao menos. Estava tentando com o AdiantiCoreApplication::loadPage e dava erro por causa dos $this da classe onEdit.


No executeMethod eu consigo passar passar uma variavel também?
Por exemplo:


Na TWindow eu tenho, no final do onSave()

TApplication::executeMethod('OuvidoriaAtendenteAtenderChamado','saveMessage');


essa função mostraria uma mensagem informando o atendente de que a informação que ele inseriu foi registrada e carregaria a TPage novamente através do onEdit
mas para isso eu teria que passar o id do chamado.
MA

Gabriel, não entendi muito bem o procedimento. Crio esse script no onSave da TWindow?
GM

Marcos, o script substitui a função do botão de fechar da window atual e você pode colocar no onEdit / onReload (na primeira função que vc chama quando abre a window).

No botão eu crio o atributo 'onclick' e a funções em js:
'event.preventDefault();' isso impede do adianti de realizar o processo de fechar a window
'__adianti_load_page("index.php?class=Window&method=onReload&key=".$key.");' isso faz uma chamada à tela que você quer voltar, só passas os parametros na url, pois o adianti utiliza $_GET, e quando é carregada essa página, a window automaticamente fecha
GM

Lembrando que o meu exemplo é pra quando clicar no botão de fechar da window, se vc quer voltar logo após salvar pode fazer assim no final do seu método de salvar:
  1. <?php
  2. TApplication::loadPage($pagina$metodo$parametros);
  3. ?>
MA

Boa tarde Gabriel!


Agradeço a sua ajuda desde já, hehe;
Então, estou me batendo um pouco aqui:
  1. <?php
  2. TApplication::loadPage('OuvidoriaAtendenteAtenderChamado''onEdit');
  3. ?>


Como faço para passar já que quero carregar essa página no onEdit da key 1, por exemplo?
Obrigado novamente!
:D
MA

Tentei assim:

  1. <?php
  2. TApplication::loadPage('OuvidoriaAtendenteAtenderChamado''onEdit''key='.$chamados->id);
  3. ?>


e o Nginx me retorna:

2018/03/07 16:51:10 [error] 27741#27741: *379161 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Cannot unset string offsets in /home/sistemas/lib/adianti/core/AdiantiCoreApplication.php:188 Stack trace: #0 /home/sistemas/lib/adianti/core/AdiantiCoreApplication.php(152): Adianti\Core\AdiantiCoreApplication::buildHttpQuery('OuvidoriaAtende...', 'onEdit', 'key=1') #1 /home/sistemas/app/control/ouvidoria/gestor/atendentes/OuvidoriaNovoAssentamentoEmChamado.class.php(153): Adianti\Core\AdiantiCoreApplication::loadPage('OuvidoriaAtende...', 'onEdit', 'key=1') #2 [internal function]: OuvidoriaNovoAssentamentoEmChamado->onSave(Array) #3 /home/sistemas/lib/adianti/control/TPage.php(51): call_user_func(Array, Array) #4 /home/sistemas/lib/adianti/control/TPage.php(205): Adianti\Control\TPage->run() #5 /home/sistemas/lib/adianti/core/AdiantiCoreApplication.php(62): Adianti\Control\TPage->show(Array) #6 /home/sistemas/engine.php(36): Adianti\Core\AdiantiCoreApplication::run(true) #7 /home/sistemas/engine.php(55): TApplication::run(true) #8 {main} thrown in /home/s" while reading response header from upstream, client: 177.200.211.66, server: sistemas.jaraguadosul.sc.gov.br, request: "POST /engine.php?class=OuvidoriaNovoAssentamentoEmChamado&method=onSave HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "sistemas.jaraguadosul.sc.gov.br", referrer: "http://sistemas.jaraguadosul.sc.gov.br/index.php?class=OuvidoriaAtendenteAtenderChamado&method=onEdit&key=1&id=1"
GM

O terceiro parametro é em array, então vc faz assim:
  1. <?php
  2. $parametros = array();
  3. $parametros['key'] = $chamados->id;
  4. TApplication::loadPage('OuvidoriaAtendenteAtenderChamado''onEdit'$parametros);
  5. ?>

Espero que ajude!
MA

Bá Gabriel! Funcionou cento por cento!!!

Muito obrigado fera! Boa semana pra ti!