CakePHP 2-Validar campos de contraseña
validation cakephp-2.0 (1)
Haz las reglas de validación como esta
''pwd'' => array(
''length'' => array(
''rule'' => array(''between'', 8, 40),
''message'' => ''Your password must be between 8 and 40 characters.'',
),
),
''pwd_repeat'' => array(
''length'' => array(
''rule'' => array(''between'', 8, 40),
''message'' => ''Your password must be between 8 and 40 characters.'',
),
''compare'' => array(
''rule'' => array(''validate_passwords''),
''message'' => ''The passwords you entered do not match.'',
)
)
Y su función validate_passwords debería ser así.
public function validate_passwords() {
return $this->data[$this->alias][''pwd''] === $this->data[$this->alias][''pwd_repeat'']
}
Tengo algún problema con la validación de Cakephp 2.
Estoy intentando validar varios campos en un formulario de edición. Algunos de ellos son una contraseña y confirman los campos de contraseña.
Quiero validar ambos solo si se suministran. Si están vacíos, no cambio la contraseña, pero si el usuario escribe sobre ellos, me gustaría validar si tienen un minLength o las contraseñas coinciden.
Código:
''pwd'' => array(
''length'' => array(
''rule'' => array(''between'', 8, 40),
''message'' => ''Your password must be between 8 and 40 characters.'',
''allowEmpty'' => true
),
),
''pwd_repeat'' => array(
''length'' => array(
''rule'' => array(''between'', 8, 40),
''message'' => ''Your password must be between 8 and 40 characters.'',
''allowEmpty'' => true
),
''compare'' => array(
''rule'' => array(''validate_passwords''),
''message'' => ''The passwords you entered do not match.'',
''allowEmpty'' => true
),
No sé si tengo que definir algunas reglas sobre la función de edición () en el controlador o debería ser suficiente, pero mi código no funciona.
¡Gracias!
Editar: (Código de controlador)
public function edit($id = null) {
if (!$this->User->exists($id)) {
throw new NotFoundException(__(''Usuario incorrecto''));
}
if ($this->request->is(''post'') || $this->request->is(''put'')) {
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__(''El usuario ha sido actualizado.''));
return $this->redirect(array(''action'' => ''index''));
} else {
$this->Session->setFlash(__(''El usuario no ha podido actualizarse. Por favor, inténtelo de nuevo.''));
}
unset($this->request->data[''User''][''pwd'']);
unset($this->request->data[''User''][''pwd_repeat'']);
} else {
$options = array(''conditions'' => array(''User.'' . $this->User->primaryKey => $id));
$this->request->data = $this->User->find(''first'', $options);
}
$roles = $this->User->Role->find(''list'');
$this->set(compact(''roles''));
}
(Ver código)
<div id="contenedor" class="users form">
<?php echo $this->Form->create(''User'', array(''name'' => ''form'')); ?>
<fieldset>
<legend><?php echo __(''Editar Usuario''); ?></legend>
<?php
echo $this->Form->input(''id'');
echo $this->Form->input(''username'', array(''label'' => __(''Usuario'')));
echo $this->Form->input(''pwd'', array(''label'' => __(''Contraseña''), ''type'' => ''password'', ''name'' => ''pass'', ''onKeyUp'' => ''habilita()'', ''value'' => ''''));
echo $this->Form->input(''pwd_repeat'', array(''label'' => __(''Repite Contraseña''), ''type'' => ''password'', ''name'' => ''rpass'', ''disabled'' => ''disabled''));
echo $this->Form->input(''firstname'', array(''label'' => __(''Nombre'')));
echo $this->Form->input(''lastname'', array(''label'' => __(''Apellidos'')));
echo $this->Form->input(''telephone'', array(''label'' => __(''Teléfono'')));
echo $this->Form->input(''email'', array(''label'' => __(''Email'')));
echo $this->Form->input(''role_id'', array(''label'' => __(''Rol'')));
?>
</fieldset>
<?php echo $this->Form->end(__(''Aceptar'')); ?>