Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu estou enfrentando este problema agora...
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;
}
}
/applications/core/interface/imageproxy/imageproxy.php?img=http://i20.servimg.com/u/f20/11/80/81/44/login10.png&key=9089765f5358131addebb3e60fdb7414cb329e619b958b400b384080cd86fa46" alt="login10.png" />
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! =/
> <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 ;)
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.
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
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!!! ]
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:
A vantagem de ser na view é que fica mais fácil de fazer o texto ser multi-idiomas.