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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. * Class constructor
  17. * Creates the page
  18. */
  19. function __construct()
  20. {
  21. parent::__construct();
  22. new TSession;
  23. //var_dump($_REQUEST);
  24. $iduser = $_REQUEST['id'];
  25. $keyuser = $_REQUEST['key'];
  26. TSession::setValue('usuario_id',"$iduser");
  27. TSession::setValue('usuario_key',"$keyuser");
  28. //$hidden_id = new THidden('id');
  29. // $hidden_id->getPostData($_REQUEST['id']);
  30. //$hidden_id->setValue($_REQUEST['id']);
  31. // $hidden_hash = new THidden('key');
  32. // create the form
  33. $this->form = new TForm;
  34. $this->form->class = 'tform';
  35. $this->form->style = 'max-width: 650px; margin-left:200px; margin-top:0px;';
  36. // creates the form field container
  37. $table = new TTable;
  38. $table->width = '100%';
  39. $this->form->add($table);
  40. // title row
  41. $table->addRowSet( new TLabel('Alterar Senha'), '' )->class='tformtitle';
  42. // create the form fields
  43. $senha = new TPassword('senha');
  44. $senha->setSize(400);
  45. $senha->style = 'height:30px;margin-bottom: 15px;font-size:12px;float:left;border-bottom-left-radius: 0;border-top-left-radius: 0;';
  46. $senha->addValidation('email', new TRequiredValidator); // email field
  47. // create the form fields
  48. $csenha = new TPassword('csenha');
  49. $csenha->setSize(400);
  50. $csenha->style = 'height:30px;margin-bottom: 15px;font-size:12px;float:left;border-bottom-left-radius: 0;border-top-left-radius: 0;';
  51. $csenha->addValidation('email', new TRequiredValidator); // email field
  52. // add a row for one field
  53. $table->addRowSet( new TLabel('Nova Senha:'), $senha );
  54. $table->addRowSet( new TLabel('Repita Senha:'), $csenha );
  55. // creates the action button
  56. $button1=new TButton('action1');
  57. $button1->setAction(new TAction(array($this, 'onSave')), 'Enviar');
  58. $button1->setImage('ico_email.png');
  59. // add a row for the button
  60. $table->addRowSet( $button1, '' )->class = 'tformaction';
  61. // define wich are the form fields
  62. $this->form->setFields(array($senha,$csenha, $button1));
  63. // wrap the page content using vertical box
  64. $vbox = new TVBox;
  65. // $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  66. $vbox->add($this->form);
  67. parent::add($vbox);
  68. }
  69. /**
  70. * Simulates an save button
  71. * Show the form content
  72. */
  73. public function onSave($param)
  74. {
  75. try
  76. {
  77. TTransaction::open('mestrado2');
  78. // new TSession();
  79. $data = $this->form->getData();
  80. //var_dump($data);
  81. $criteria = new TCriteria();
  82. $criteria->add(new TFilter('id','=', TSession::getValue('usuario_id')));
  83. $criteria->add(new TFilter('email','=', TSession::getValue('usuario_key')));
  84. $repository = new TRepository('SystemUser');
  85. $user = $repository->load($criteria);
  86. if (!$user)
  87. {
  88. new TMessage('error','Usuário não existe na base dados');
  89. }
  90. else
  91. {
  92. try
  93. {
  94. foreach($user as $usuario){
  95. if($hash == $data->key){
  96. $usuario->password = $data->senha;
  97. $usuario->save();
  98. }else{
  99. new TMessage('error','Dados inválidos!');
  100. }
  101. TCoreApplication::gotoPage('LoginForm');
  102. }
  103. }
  104. catch (Exception $e)
  105. {
  106. new TMessage('error','Erro : ' . $e->getMessage());
  107. }
  108. }
  109. $this->form->setData($data);
  110. TTransaction::close();
  111. }
  112. catch (Exception $e)
  113. {
  114. new TMessage('error','Erro : ' . $e->getMessage());
  115. }
  116. }
  117. }
  118. ?>


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. $id = $param['id'];
  6. $key = $param['key'] ;
  7. new TMessage('error',$id."--".$key);
  8. // keep the search data in the session
  9. TSession::setValue('id_user', $id);
  10. TSession::setValue('key_user', $key);
  11. // fill the form with data again
  12. //$this->form->setData($data);
  13. }
  14. ?>

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