plantillas - cakephp one form, multiple models, no muestra los mensajes de validación de un modelo
plantillas para cakephp (2)
Los campos de hasMany
model deben ser como una matriz ( cuando se combina con el modelo principal ), ver .0
agregado entre los nombres de los campos
echo $this->Form->input(''Identity.0.name'');
echo $this->Form->input(''Identity.0.surname'');
...
echo $this->Form->input(''Identity.0.email'');
Tengo un formulario de registro y estoy creando un registro en las tablas de Usuario e Identidad (un usuario tiene muchas identidades)
la forma se ve así
<?php echo $this->Form->create(''User'');?>
<fieldset>
<legend><?php __(''Register''); ?></legend>
<?php
echo $this->Form->input(''Identity.name'');
echo $this->Form->input(''Identity.surname'');
echo $this->Form->input(''User.username'');
echo $this->Form->input(''User.pass'');
echo $this->Form->input(''User.pass_confirm'', array(''type'' => ''password''));
echo $this->Form->input(''Identity.email'');
?>
</fieldset>
<?php echo $this->Form->end(__(''Submit'', true));?>
Obtengo todos los mensajes de error de validación para los campos User.*
Pero los campos Identity.*
Se muestran sin mensajes.
reglas de validación:
Identidad:
var $validate = array(
''name'' => array(
''notempty'' => array(
''rule'' => ''notempty'',
''required'' => true,
''message'' => ''Your name is required.''
)
),
''surname'' => array(
''notempty'' => array(
''rule'' => ''notempty'',
''required'' => true,
''message'' => ''Your surname is required.''
)
),
''email'' => array(
''validateEmail'' => array(
''rule'' => ''validateEmail'',
''required'' => true,
''message'' => ''The email seems invalid.''
),
''notempty'' => array(
''rule'' => ''notempty'',
''message'' => ''You have to enter an email address.''
)
),
);
Usuario:
var $validate = array(
''pass'' => array(
''required'' => array(
''rule'' => array(''custom'',''/^.*[0-9].*$/i''),
''message''=>''Password must contain numbers''),
''length'' => array(
''rule'' => array(
''minLength'',8),
''message'' => ''Password must be at least 8 characters long'')
),
''pass_confirm'' => array(
''required'' => array(
''rule'' => ''notempty'',
''message'' => ''You have to confirm the password''
),
''length'' => array(
''rule'' => ''validatePassword'',
''message''=>''Your passwords don/'t match!'' )
),
''username'' => array(
''unique'' => array(
''rule'' => ''validateUniqueUsername'',
''message'' => ''Username is already taken, please choose a different one.''
),
''notempty'' => array(
''rule'' => ''notempty'',
''message'' => ''You have to choose a username.''
)
),
);
Una respuesta que encontré fue en esta página mucho sobre el mismo problema. La solución fue agregar el atributo de validar a saveAll
if($this->Member->saveAll($this->data, array(''validate''=>''only''))){
//your custom save function
}