Tylër 0 Denunciar post Postado Maio 21, 2011 Eu estou enfrentando este problema agora... http://forum.imasters.com.br/topic/433492-confirm-password-sem-field-em-tabela/page__gopid__1712310#entry1712310 Eu segui como no link: http://www.littlehar...ephp-12-part-ii Eu realizo as validaçoes no model, entao tive que segui como no link, com algumas modificaçoes é claro... mas acontece que nao me retorna nenhum erro de validacao mas nao cadastra =/ models/user.php 'pass' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Enter a password!', ), 'maxLength' => array( 'rule' => array('maxLength', 120), 'message' => 'Maximum of 120 caracters!', ), 'confirmPassword' => array( 'rule' => array( 'confirmPassword', 'pass' ), 'message' => 'Passwords do not match!', ), ), 'confirm_pass' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Enter a password confirmation!', ), 'maxLength' => array( 'rule' => array('maxLength', 120), 'message' => 'Maximum of 120 caracters!', ), ), public function confirmPassword ($data) { $valid = FALSE; $confirm_pass = $this->data['User']['confirm_pass']; if( !empty($confirm_pass) ) { if ( $data['pass'] === Security::hash($confirm_pass, 'sha256', true) ) { $valid = TRUE; // senhas batem } return $valid; } } Na imagem acimamostra o campo password após eu clicar em "confirmar", bom, nem ele e nem o campo de confirmaçao de senha mostram erros quando preenchidos corretamente, mas lá em cima, diz que não pôde salvar! =/ Compartilhar este post Link para o post Compartilhar em outros sites
m@dDog 5 Denunciar post Postado Maio 21, 2011 O nome do seu field (na view) deve ter o mesmo nome do seu validate (no model). Mas você também pode definir no field de sua view um texto e nome de cada validação no atributo "error". Ex: echo $this->Form->input('name', array('label' => __('Nome', true), 'div' => true, 'error' => array('notempty' => __('Este campo precisa ser preenchido.', true)))); A vantagem de ser na view é que fica mais fácil de fazer o texto ser multi-idiomas. Compartilhar este post Link para o post Compartilhar em outros sites
Tylër 0 Denunciar post Postado Maio 21, 2011 <br />O nome do seu field (na view) deve ter o mesmo nome do seu validate (no model).<br /><br />Mas você também pode definir no field de sua view um texto e nome de cada validação no atributo "error".<br />Ex:<br />echo $this->Form->input('name', array('label' => __('Nome', true), 'div' => true, 'error' => array('notempty' => __('Este campo precisa ser preenchido.', true)))); <br /><br />A vantagem de ser na view é que fica mais fácil de fazer o texto ser multi-idiomas.<br /> <br /><br /><br /> Bom, nao entendi o que disse, pois o 'pass' e 'confirm_pass' que estao no model, são os campos field da view sim ;) Compartilhar este post Link para o post Compartilhar em outros sites
m@dDog 5 Denunciar post Postado Maio 23, 2011 Tenta usar isso em seu controller para imprimir os erros de validação. $errors = $this->ModelName->invalidFields(); debug($errors); Obs: Lembre-se de que para usar o debug() o Configure::write('debug', 1); deve estar definido como 1 ou 2. Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Maio 24, 2011 Olá tudo bom? vamos lá! Primeiro é necessário criar uma função extra para validação: em seu Model crie a função /* * Function cofirmpass * Confirma campo de senha * @params $compare_field campo a ser comparado * @params $check primeiro campo * @return true caso seja igual * @public */ function confirmpass($check, $compare_field) { #Valor do primeiro campo $value = array_values($check); $value = $value[0]; #Importa Auth Componente App::import('Component','Auth'); $auth = new AuthComponent; return ($auth->password($value)==$this->data['User'][$compare_field]); } na validação coloque 'confirm_pass'=>array( 'rule'=>array('confirmpass','nome_do_campo_senha'), 'required'=>true, 'message'=>'Confirmação não é igual a Senha' ) espero que ajude. abraços Compartilhar este post Link para o post Compartilhar em outros sites
Tylër 0 Denunciar post Postado Maio 26, 2011 espero que ajude.abraços Bom, eu já tinha função de validaçao e já tinha validado com validates no Model, o problema é que a função está correta, mas mesmo assim os dados não são gravados.. Tenta usar isso em seu controller para imprimir os erros de validação. $errors = $this->ModelName->invalidFields(); debug($errors); Puxa, ajudou mesmo, tinha um campo que deveria estar setado no controler com valor 0, que era o is_admin, e que eu nao conseguia lembrar, já que foi um campo que criei por último na tabela,,... ufa... que bom que resolvi! ^^ Obg aos dois! ;) Este era o único problema que eu tinha com auth! =D Valeu, precisando, estamos aí! ;) [ RESOLVIDO!!! ] Compartilhar este post Link para o post Compartilhar em outros sites