Es algo interesante lo que haces pero te recomendaria usar
transacciones. De todas formas lo de la
validación no es muy complicado y como dijo mbavio haz las
validaciones en el modelo.
Nota debes si usas MySQL tus tablas deben ser INNODB o deben usar
algun motor transaccional de MySQL
En tu accion del controlador add aumenta un código similar a este
<?php
#Ingresar datos
if(!empty($this->data))
{
#Defines cual es el modelo para realizar la trasaccion en este caso
User
$this->User->begin();
#Para poder comprobar si la transaccion se cumple
$save = true;
#Guardando los datos de User
if(!$this->User->save($this->data['User'])) {
$save = false;
#Para que se pueda revisar de los otros modelos
$user_id = 1;
$errorsUser = $this->User->validationErrors;
}else{
$user_id = $this->User->getLastInsertID();
}
#Guardando los datos de Sector
if(!$this->Sector->save($this->data['User'])) {
$save = false;
#Para que se pueda revisar de los otros modelos
$sector_id = 1;
$errorsSector = $this->Sector->validationErrors;
}else{
$sector_id = $this->Sector->getLastInsertID();
}
#Almacenamieto de SectorsUsers
#Supongo de que debes de hacer esto antes de guardar SectorUser
$this->data['SectorUser']['user_id'] = $user_id;
$this->data['SectorUser']['sector_id'] = $sector_id;
if(!$this->SectorUser->save($this->data['SectorUser'])){
$save = false;
#Almacenamiento de errores para desplegar en la vista
$errorsSectorUsers = $this->SectorUser->validationErrors;
}
if($save) {
#Fin de Transaccion
$this->User->commit();
#Direccion a la cual quieres redireccionar (Puedes elegir la
que tu
quieras)
$name = Inflector::humanize($this->name);
$this->Session->setFlash('Se ha ingresado los datos');
$this->redirect("/$name/");
exit(0);
}else{
$this->User->rollback();
$this->Session->setFlash('<div class="error-message">Error:
Corrija
los errores</div>');
#Se prepara los errores que se presentara
$this->set('errorsUser', $errorsUser);
$this->set('errorsSector', $errorsSector);
$this->set('errorsSectorUsers', $errorsSectorUsers);
}
}
?>
Los mensajes de error son los mensajes de error del Modelo como te lo
explicaron antes y puedes usar
las variables $errorsUser, $errorsSector y $errorsSectorUsers para
poder presentarlas en tu vista de la manera que quieras.
--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos
de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a [email protected]
Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/CakePHP-es?hl=es.
-~----------~----~----~----~------~----~------~--~---