Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Passar um valor campo para campo Hidden Boa noite , pessoal estou me batendo, como eu passo um valor por exemplo , $_REQUEST['cod'] para um campo Hidden. estou tentando assim Mas o valor não é setado. Se eu der um var_dump aparece assim: Desde já agradeço a...
WR
Passar um valor campo para campo Hidden  
Fechado
Boa noite , pessoal estou me batendo, como eu passo um valor por exemplo , $_REQUEST['cod'] para um campo Hidden.
estou tentando assim

  1. <?php
  2. $hidden = new THidden('cod');
  3. $hidden->setValue($_REQUEST['cod']);
  4. ?>


Mas o valor não é setado.
Se eu der um var_dump
  1. <?php
  2. var_dump($this->form->getData());  
  3. ?>

aparece assim:

  1. <?php
  2. ["cod"]=> string(0""
  3. ?>


Desde já agradeço a todos.
Abraços

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


WR

Observação : Estou tentado pegar os dados vindo de uma url (via get) . exemplo: cod=8&key=b6979cf5d08342beecb49049181716a5
AA

Na contrução da classe não é possível pegar valor dessa maneira, poste mais detalhes do código: onde que vc chama o método get, e qual função ele chama por exemplo
WR

Olá Anderson, não estou com meu computador agora, de tarde eu te passo as classes que estou usuando.
Ontem a noite ainda tentei com TSession, mas ao recuperar as informações vem NULL.

Abraços
WR

Segue o código da classe que estou fazendo, eu acabei mudando para TSession invés de THidden.

É enviado por e-mail um link para o usuário redefinir a senha,(localhost/juntos/index.php?class=RedefinirSenha&method=&id=8)
ao clicar no link o usuário é redirecionado para a classe a baixo.




  1. <?php
  2. /**
  3.  * FormQuickView
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006-2014 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class RedefinirSenha extends TPage
  13. {
  14.     private $form;
  15.     
  16.     /**
  17.      * Class constructor
  18.      * Creates the page
  19.      */
  20.     function __construct()
  21.     {
  22.         parent::__construct();
  23.         
  24.         new TSession
  25.         
  26.         //var_dump($_REQUEST);
  27.         $iduser $_REQUEST['id'];
  28.         $keyuser $_REQUEST['key'];
  29.         
  30.         TSession::setValue('usuario_id',"$iduser");
  31.         TSession::setValue('usuario_key',"$keyuser");
  32.         //$hidden_id =  new THidden('id');
  33.         // $hidden_id->getPostData($_REQUEST['id']);
  34.         //$hidden_id->setValue($_REQUEST['id']);
  35.         // $hidden_hash = new THidden('key');
  36.        
  37.        
  38.         // create the form
  39.         $this->form = new TForm;
  40.         $this->form->class 'tform';
  41.         $this->form->style 'max-width: 650px; margin-left:200px; margin-top:0px;';
  42.         
  43.         // creates the form field container
  44.         $table = new TTable;
  45.         $table->width '100%';
  46.         $this->form->add($table);
  47.         
  48.         
  49.         // title row
  50.         $table->addRowSet( new TLabel('Alterar Senha'), '' )->class='tformtitle';
  51.         
  52.         // create the form fields
  53.         $senha = new TPassword('senha');
  54.         $senha->setSize(400);
  55.         $senha->style 'height:30px;margin-bottom: 15px;font-size:12px;float:left;border-bottom-left-radius: 0;border-top-left-radius: 0;';
  56.        
  57.         $senha->addValidation('email', new TRequiredValidator); // email field
  58.         
  59.         // create the form fields
  60.         $csenha = new TPassword('csenha');
  61.         $csenha->setSize(400);
  62.         $csenha->style 'height:30px;margin-bottom: 15px;font-size:12px;float:left;border-bottom-left-radius: 0;border-top-left-radius: 0;';
  63.        
  64.         $csenha->addValidation('email', new TRequiredValidator); // email field
  65.        
  66.                 
  67.         // add a row for one field
  68.         
  69.         $table->addRowSet( new TLabel('Nova Senha:'), $senha );
  70.         $table->addRowSet( new TLabel('Repita Senha:'), $csenha );
  71.     
  72.         
  73.         // creates the action button
  74.         $button1=new TButton('action1');
  75.         $button1->setAction(new TAction(array($this'onSave')), 'Enviar');
  76.         $button1->setImage('ico_email.png');
  77.         
  78.         // add a row for the button
  79.         $table->addRowSet$button1'' )->class 'tformaction';
  80.         
  81.         // define wich are the form fields
  82.         $this->form->setFields(array($senha,$csenha$button1));
  83.         
  84.         // wrap the page content using vertical box
  85.         $vbox = new TVBox;
  86.        // $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  87.         $vbox->add($this->form);
  88.         parent::add($vbox);
  89.     }
  90.     
  91.     /**
  92.      * Simulates an save button
  93.      * Show the form content
  94.      */
  95.     public function onSave($param)
  96.     { 
  97.         try 
  98.         { 
  99.             TTransaction::open('mestrado2');
  100.            // new TSession();  
  101.             
  102.             $data $this->form->getData();
  103.             //var_dump($data);   
  104.     
  105.             $criteria = new TCriteria(); 
  106.             $criteria->add(new TFilter('id','='TSession::getValue('usuario_id'))); 
  107.             $criteria->add(new TFilter('email','='TSession::getValue('usuario_key'))); 
  108.             $repository = new TRepository('SystemUser'); 
  109.             $user $repository->load($criteria); 
  110.             if (!$user
  111.             { 
  112.                 new TMessage('error','Usuário não existe na base dados'); 
  113.             } 
  114.             else 
  115.             { 
  116.                 try 
  117.                 { 
  118.                 foreach($user as $usuario){ 
  119.                 
  120.                     if($hash == $data->key){
  121.                         $usuario->password $data->senha;
  122.                         $usuario->save();
  123.                     }else{
  124.                         new TMessage('error','Dados inválidos!'); 
  125.                     } 
  126.                                                        
  127.                    TCoreApplication::gotoPage('LoginForm'); 
  128.                  }
  129.                 }  
  130.                 catch (Exception $e
  131.                 { 
  132.                     new TMessage('error','Erro : ' $e->getMessage()); 
  133.                 } 
  134.         
  135.         } 
  136.         
  137.         $this->form->setData($data); 
  138.         
  139.         TTransaction::close(); 
  140.         } 
  141.         catch (Exception $e
  142.         { 
  143.         new TMessage('error','Erro : ' $e->getMessage()); 
  144.         } 
  145.   }
  146. }
  147. ?>


AA

Primeiro vc precisa criar um método, ex: onLoad na sua classe. Dentro desse método vc carregaria os dados do id que vc passou por parametro

depois na url ficaria assim localhost/juntos/index.php?class=RedefinirSenha&method=onLoad&id=8

Dentro do método, vc carrega os dados, e envia para o formulário através do método setData. Dá uma olhada nos exemplos do tutor, tem bastante exemplos bacana pra estudo.
WR

Anderson, obrigado pelas dicas. Mais tarde vou fazer conforme você orientou e ver se consigo resolver.

Abraços
WR

Olá Anderson, eu criei o método onLoad na classe e alterei para gerar o link no modelo que você me passou.

  1. <?php
  2. http://localhost/juntos/index.php?class=RedefinirSenha&method=onLoad=&id=8&key=b6979cf5d08342beecb49049181716a5
  3. ?>


Quando clicando no link na URL não aparece o método onLoad. (conforme a baixo)
  1. <?php
  2. http://localhost/juntos/index.php?class=RedefinirSenha&method=&id=8&key=b6979cf5d08342beecb49049181716a5
  3. ?>


Método onLoad
  1. <?php
  2. public function onLoad($param NULL)
  3.     {
  4.          new TSession(); 
  5.       
  6.          $id $param['id'];
  7.          $key =  $param['key'] ;
  8.          new TMessage('error',$id."--".$key);
  9.          // keep the search data in the session
  10.          TSession::setValue('id_user'$id);
  11.          TSession::setValue('key_user'$key);
  12.          // fill the form with data again
  13.          //$this->form->setData($data);
  14.         
  15.     }
  16. ?>

Não usei o setData ,pois os dados não irão aparecer no formulários. Na verdade oque eu preciso é que os dados recebidos via URL (id e key) sejam gravados na Session para depois serem recuperados no momento do onSave onde eu faço uma busca no banco com base nesses dados.

Abraços

AA

Onde que você gera o link? é usando um TAction? tem como postar o código?
WR

Anderson , o link é gerado por outra classe no onSave da classe.
  1. <?php
  2. public function onSave($param)
  3.     { 
  4.         try 
  5.         { 
  6.             TTransaction::open('banco'); 
  7.             
  8.             $data $this->form->getData(); 
  9.             
  10.             $criteria = new TCriteria(); 
  11.             $criteria->add(new TFilter('email','=',$data->email)); 
  12.             $repository = new TRepository('SystemUser'); 
  13.             $user $repository->load($criteria); 
  14.             if (!$user
  15.             { 
  16.                 new TMessage('error','E-mail não existe na base dados'); 
  17.             } 
  18.             else 
  19.             { 
  20.                 try 
  21.                 { 
  22.                 foreach($user as $usuario){ 
  23.                 
  24.                     $key md5($usuario->id "" $usuario->email); 
  25.                     
  26.                     $body "Olá, " $usuario->name "
  27.                      "
  28.                     $body .= "Você solicitou a redefinição de senha de acesso à área de suporte.
  29.                     "
  30.                     $body .= "Clique no link abaixo e você será redirecionado a uma página onde poderá redefinir sua senha de acesso.
  31.                     "
  32.                     $link "<a href='localhost/juntos/index.php?class=RedefinirSenha&method=onLoad&id=" .$usuario->id ."&key=" $key"'>Redefinir Senha</a>";  //AQUI GERA O LINK
  33.                     $body .= " ".$link
  34.                     $body .= "Att.
  35.                     "
  36.                    
  37.                     $assunto ' Redefinir senha de acesso';
  38.                     $seu_email 'sacjuntos@gmail.com';
  39.                    
  40.                     $host_do_email 'smtp.gmail.com ';
  41.                     
  42.                     //classe email
  43.                     $mail = new PHPMailer();
  44.                     $mail->SMTPDebug 3
  45.                     /* Configura os destinatários (pra quem vai o email) */
  46.                     $mail->AddAddress(trim($usuario->email),$usuario->name);
  47.                     // $mail->AddAddress('email@email.com');
  48.                     // $mail->AddCC('email@email.com', 'Nome da pessoa'); // Copia
  49.                     // $mail->AddBCC('email@email.com', 'Nome da pessoa'); // Cópia Oculta
  50.                                                      
  51.                     /* Define que é uma conexão SMTP */
  52.                     $mail->IsSMTP();
  53.                     /* Define o endereço do servidor de envio */
  54.                     $mail->Host gethostbyname($host_do_email);
  55.                     //$mail->Host = $host_do_email;
  56.                     /* Utilizar autenticação SMTP */ 
  57.                     $mail->SMTPAuth true;
  58.                     /* Protocolo da conexão */
  59.                     $mail->SMTPSecure "tls";
  60.                     /* Porta da conexão */
  61.                     $mail->Port "587";
  62.                     /* Email ou usuário para autenticação */
  63.                     $mail->Username $seu_email;
  64.                     /* Senha do usuário */
  65.                     $mail->Password $sua_senha;
  66.                      
  67.                     /* Configura os dados do remetente do email */
  68.                     $mail->From $seu_email// Seu e-mail
  69.                     $mail->FromName $seu_nome// Seu nome
  70.                      
  71.                     /* Configura a mensagem */
  72.                     $mail->IsHTML(true); // Configura um e-mail em HTML
  73.                      
  74.                     /*   
  75.                      * Se tiver problemas com acentos, modifique o charset
  76.                      * para ISO-8859-1  
  77.                      */
  78.                     $mail->CharSet 'UTF-8'// Charset da mensagem (opcional)
  79.                      
  80.                     /* Configura o texto e assunto */
  81.                     $mail->Subject  $assunto// Assunto da mensagem
  82.                     $mail->Body $body// A mensagem em HTML
  83.                     //$mail->AltBody = trim(strip_tags($body)); // A mesma mensagem em texto puro
  84.                      
  85.                     /* Configura o anexo a ser enviado (se tiver um) */
  86.                     //$mail->AddAttachment("foto.jpg", "foto.jpg");  // Insere um anexo
  87.                      
  88.                     /* Envia o email */
  89.                     $email_enviado $mail->Send();
  90.                      
  91.                     /* Limpa tudo */
  92.                     $mail->ClearAllRecipients();
  93.                     $mail->ClearAttachments();
  94.                      
  95.                     /* Mostra se o email foi enviado ou não */
  96.                     if ($email_enviado) {
  97.                         new TMessage('info','E-mail enviado com sucesso'); 
  98.                     } else {
  99.                         new TMessage('info',$mail->ErrorInfo); 
  100.                     }
  101.                   
  102.                    TApplication::gotoPage('LoginForm'); 
  103.                  }
  104.                 }  
  105.                 catch (Exception $e
  106.                 { 
  107.                     new TMessage('error','Erro : ' $e->getMessage()); 
  108.                 } 
  109.         
  110.         } 
  111. ?>
WR

Anderson, depois de tanto quebrar a cabeça e perder alguns fios de cabelo consegui resolver. Agradeço sua disposição em tentar ajudar.


Abraços
AA

Que bom que conseguiu resolver, se possível, poste a solução.