PD
Postagem estática (sem recarga) de formulários
Fechado
O Adianti Framework usa de maneira extensiva Requisições AJAX em todos os processamentos de ações. Quando clicamos em uma ação de uma datagrid ou enviamos os dados de um formulário, somente o núcleo da página é recarregado, e não toda a página. Com isso, a navegação fica bastante fluida. Em um formulário, por exemplo, somente o núcleo da tela é atualizado para demonstrar as atualizações que os campos sofreram após a postagem da ação. Como por exemplo, podemos citar o ID que é preenchido após a postagem.
Entretanto, podemos até mesmo desligar esse comportamento e realizar a postagem estática do formulário. A postagem estática irá enviar os dados para o método, mas não irá recarregar o núcleo da página. O lado positivo é que serão transmitidos menos dados na requisição. O lado negativo é que não podemos usar a variável $this dentro de um método estático. Assim, devemos coletar os dados por meio do parâmetro $param.
No exemplo a seguir, pegamos o exemplo FormQuickView, que vem junto com o tutor, e marcamos o método onSave() como STATIC. Somente isso já fará com que somente os dados do formulário sejam postados para o método onSave(). Com isso, nenhuma parte da tela será recarregada, nem ao menos o formulário, como tradicionalmente ocorre. Nesse caso, não podemos usar a variável $this para chamar o $this->form->getData(), mas podemos obter todos os dados a partir da variável $param, que é um vetor. Dentro de um método estático podemos criar diálogos (TMessage) e também podemos invocar métodos estáticos como TForm::sendData().
Obs: Para conferir a mudança, você pode inspecionar a página e monitorar o tamanho da requisição na aba "Network".
Entretanto, podemos até mesmo desligar esse comportamento e realizar a postagem estática do formulário. A postagem estática irá enviar os dados para o método, mas não irá recarregar o núcleo da página. O lado positivo é que serão transmitidos menos dados na requisição. O lado negativo é que não podemos usar a variável $this dentro de um método estático. Assim, devemos coletar os dados por meio do parâmetro $param.
No exemplo a seguir, pegamos o exemplo FormQuickView, que vem junto com o tutor, e marcamos o método onSave() como STATIC. Somente isso já fará com que somente os dados do formulário sejam postados para o método onSave(). Com isso, nenhuma parte da tela será recarregada, nem ao menos o formulário, como tradicionalmente ocorre. Nesse caso, não podemos usar a variável $this para chamar o $this->form->getData(), mas podemos obter todos os dados a partir da variável $param, que é um vetor. Dentro de um método estático podemos criar diálogos (TMessage) e também podemos invocar métodos estáticos como TForm::sendData().
- <?php
- class FormQuickView extends TPage
- {
- function __construct() { ... }
- public static function onSave($param)
- {
- // cria uma string com os valores dos elementos do formulário
- $message = 'Id: ' . $param['id'] . '<br>';
- $message.= 'Description : ' . $param['description'] . '<br>';
- $message.= 'Date1: ' . $param['date1'] . '<br>';
- $message.= 'Date2: ' . $param['date2'] . '<br>';
- $message.= 'Color : ' . $param['color'] . '<br>';
- $message.= 'List : ' . $param['list'] . '<br>';
- $message.= 'Text : ' . $param['text'] . '<br>';
- // exibe a mensagem
- new TMessage('info', $message);
- }
- }
- ?>
Obs: Para conferir a mudança, você pode inspecionar a página e monitorar o tamanho da requisição na aba "Network".
Dentro desse metodo static eu posso atualizar um datagrid dos dados capturados com $param na minha pagina ?