Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Uma validação Bom dia pessoal. Estou com uma dificuldade no Adianti. Criei um formulário padrao, esta tudo funcionando direitinho, mas antes de salvar preciso fazer um MD5 no campo senha : como faço isso dentro da estrutura criada pelo adianti framework ? onde faço essa transformação ? Desde ja agradeço....
FM
Uma validação  
Fechado
Bom dia pessoal. Estou com uma dificuldade no Adianti. Criei um formulário padrao, esta tudo funcionando direitinho, mas antes de salvar preciso fazer um MD5 no campo senha :
  1. <?php
  2. $senha MD5($senha);
  3. ?>


como faço isso dentro da estrutura criada pelo adianti framework ? onde faço essa transformação ?
Desde ja 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)


WG

Eu geralmente faço no método store do model.
Geralmente o código da store do model está assim:

  1. <?php
  2. public function store()
  3. {
  4.     // store the object itself
  5.     parent::store();
  6.    // ... Restante do código para persistência, etc
  7. }
  8. ?>


Antes de chamar o método store da classe pai, faz o hash da senha...

public function store()
{
// hash md5
$this->senha = md5($senha);

// store the object itself
parent::store();

// ... Restante do código para persistência, etc
}

?>

Porém vai enfrentar um problema, que seria o caso de uma edição onde acabaria aplicando o hash novamente... então aconselho a fazer o hash apenas quando está inserindo... e criar um método específico para alterar a senha...

public function store()
{
// hash md5
if(!isset( $this->id) )
{
$this->senha = md5($this->senha);
}

// store the object itself
parent::store();

// ... Restante do código para persistência, etc
}

public function changePassword(){
// Aqui implementa troca de senha
}

?>
FM

Ola pessoal,primeiramente obrigado ao Wemerson pela atenção. Ja tinha resolvido paleativamente quando li a resposta do Wemerson que me atentou para o detalhe das edições, então criei a solução da seguinte forma. O MD5 codifica a senha e ela fica com 32 letras entao faço essa analise, se asenha for de 32 caracteres ela fica como esta, senao executo o MD5, segue código :

  1. <?php
  2.  function onSave()
  3.     {
  4.         try
  5.         {
  6.             // open a transaction with database 'cadAluno'
  7.             TTransaction::open('cadAluno');
  8.             
  9.             // get the form data into an active record MdlUser
  10.             $object $this->form->getData('MdlUser');
  11.             
  12.             $this->form->validate(); // form validation
  13.             
  14.              // a solução para a criptografia  
  15.             if(strlen($object->password) < 32
  16.             { 
  17.                 $object->password MD5($object->password);
  18.             }
  19.             $object->store(); // stores the object
  20.             $this->form->setData($object); // keep form data
  21.             
  22.             TTransaction::close(); // close the transaction
  23.             
  24.             // shows the success message
  25.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  26.         }
  27.         catch (Exception $e// in case of exception
  28.         {
  29.             // shows the exception error message
  30.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  31.             
  32.             $this->form->setData$this->form->getData() ); // keep form data
  33.             
  34.             // undo all pending operations
  35.             TTransaction::rollback();
  36.         }
  37.     }
  38. ?>