Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mrBaleia

[Resolvido] Confirm password sem field em tabela.

Recommended Posts

Ola.

 

Eu tenho uma tabela users que tem os campos login e password. Meu objetivo é criar um view com uma form que tenha os campos login, password e confirm password usando o form helper.

 

Quando eu faço assim:

 

<?php echo $this->Form->create('User', array('action'=>'changeSenha'); ?>

<?php echo $this->Form->input('User.login'); ?>

<?php echo $this->Form->create('User.password'); ?>

<?php echo $this->Form->create('confirmPassword'); ?>

<?php echo $this->Form->end(); ?>

 

 

ele manda os dados pro controler em $this->data, mas como não existe confirmPassword na minha tabela e esse codigo fica invalido, a minha duvida é se é possivel enviar um dado dessa forma? Eu acesso $this->data['User']['login'] e $this->data['User']['password'].

 

Os exemplos que eu vi de cofirm password são com um field confirmPassword na tabela. Quero fazer isso sem ter que adicionar o field

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer assim:

http://www.littlehart.net/atthekeyboard/2008/01/22/simple-user-registration-in-cakephp-12-part-ii

 

Ou assim:

 

Na View:

<?php 
echo $this->Form->create('User', array('action' => 'add'); ?>
echo $this->Form->input('login'); ?>
echo $this->Form->input('password'); ?>
echo $this->Form->input('confirm_password'); ?>
echo $this->Form->end(); 
?>

Como o nome do Form é User, não precisa adicionar no field (você também pode trocar para Usuario).

 

No Model User:

public $validate = array(
   'senha' => array(
'valorCampoIgual' => array(
'rule' => array('valorCampoIgual', 'confirma'),
'message' => 'A senha não foi confirmada corretamente'
)
   )
)

public function valorCampoIgual($field=array(), $compare_field=null){
   $define = array_keys($field);
   $v1 = $this->data[$this->name][$define[0]];
   $v2 = $this->data[$this->name][$compare_field];
   return ($v1 === $v2);
}

 

No Controller:

if (!empty($this->data)) {
   $this->data['User']['confirm_password'] = $this->Auth->password($this->data['User']['confirm_password']);
   $this->User->set($this->data);
   $validate = $this->User->validates();
   if ($validate) {
       // Validou
   } else {
// Não validou
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, funcionou!!

Achei melhor da maneira que você fez. Consegui aproveita a mesma função para fazer o confirmar Email.

 

 

Vlw pela ajuda m@dDog!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou usar este tópico como referência para uma dúvida parecida! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.