Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Uncaught Exception: Serialization of 'Closure' - Sessão Boa noite! Possuo uma situação atípica, possuo um TCombo com vários itens e dependendo da seleção do item ele carrega uma datagrid com as informações da seleção. Quando seleciono um item necessito recarregar novamente a página, construir a datagrid e exibir o resultado na tela. Esta parte está funcionando muito bem, porém, o problema ocorre na paginação. Os meus dados vem d...
CG
Uncaught Exception: Serialization of 'Closure' - Sessão  
Boa noite!

Possuo uma situação atípica, possuo um TCombo com vários itens e dependendo da seleção do item ele carrega uma datagrid com as informações da seleção.
Quando seleciono um item necessito recarregar novamente a página, construir a datagrid e exibir o resultado na tela.
Esta parte está funcionando muito bem, porém, o problema ocorre na paginação.
Os meus dados vem de uma api através de um redirecionamento de porta, e toda vez que necessito trocar a página, necessito acessar a api e fazer todo o processo, mas o framework chama o método onReload quando se clica na paginação, e como neste método a construção da datagrid não existe ela não é exibida na tela.
Consegui resolver esta questão e com a paginação funcionando perfeitamente, porém, para resolver isso precisei enviar por sessão a datagrid e a paginação, como a datagrid neste caso possui agrupamento de botões, creio que por este motivo aparece este erro:
Fatal error: Uncaught Exception: Serialization of 'Closure' is not allowed in [no active file] on line 0

Necessitei fazer desta forma em 2 formulários, no formulário que não existe agrupamento de opções o erro não aparece (a datagrid e a paginação também são enviadas por sessão).
$action_group = new TDataGridActionGroup('Opções ', 'bs:th'); $action_group->addHeader('<b style="font-size:14px;">Ações</b>'); $action_group->addAction($action_edit); $action_group->addAction($action_active); $action_group->addAction($action_deactive); $this->datagrid->addActionGroup($action_group); $this->datagrid->createModel();


Fui verificar como serializar então essa classe mas não tive muito sucesso, alguém sabe como poderia resolver?
OBS: pensei em uma solução que seria no método onReload enviar por parâmetro a datagrid e a paginação, fiz isso, mas quando se clica na paginação teria que enviar um objeto dentro do $param para poder construir a datagrid juntamente com a paginação (adicionei dentro do $param, mas quando clica em um número da paginação esses objetos não passam).

Se alguém puder ajudar como passar essa datagrid por sessão ou então enviar por parâmetro no onReload a paginação e a datagrid agradeço!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


NR

"mas o framework chama o método onReload quando se clica na paginação"
Você pode definir que função deve ser chamada através da função setAction da TPageNavigation.

Sobre o resto, há mesmo a necessidade de passar essas variáveis por parâmetro? Não daria pra modificar a função que faz a comunicação com a api para ela apenas retornar os dados e deixar a própria onReload popular a grid?
CG

Bom dia Nataniel!

O detalhe é que quando eu escolho uma das opções do meu tcombo eu construo a datagrid do zero, eu não crio ela no construtor, eu crio depois que escolhi, e tem um motivo pra isso.

Acontece que quando eu seleciono um item e construo a datagrid, acima dela eu coloco um label informando do que se trata e tudo mais. Se eu deixar ela no construtor, esse label será inserido mas como não há seleção ele irá ficar em branco, o que não resolve. Mas depois que eu seleciono um item e a grid é preenchida, no método onreload eu já adiciono o label com as informações no container, porém fica abaixo da grid e não fica intuitivo pro usuário, essas informações tem que ficar acima da datagrid.

Por isso construo o label e a grid com as informações da seleção e depois então eu populo ela, e tem funcionado tranquilamente, o problema que ocorre é na paginação, pq como a datagrid não foi criada no construtor, toda vez que se clica na paginação a datagrid some, e para que isso não aconteça eu jogava ela na sessão e construia novamente e resolvia o problema, porém, quando se tem os actiongroup acontece esse erro de "clousure".

Mas vou modificar o action da TPage e enviar no vetor os 2 objetos e fazer o teste, acho que vai funcionar, não tinha me ligado do action no tpagenavigation.
Obrigado!