Hi,
I can insert many values for members using multimodelform extension. Later a need to remove one maybe more, but when i remove this items in client side from members using update action, that items exist still in database, they were updated to empty values.
Master-> Clientetarjeta
Members-> ClienteNumerotelefono
form ajaxvalidation is enabled;
public function actionCreate() {
$model = new Cliente;
$clientepreguntasecreta = new ClientePreguntaSecreta;
$clientetarjeta = new ClienteTarjeta;
$clientenumerotelefono = new ClienteNumerotelefono;
$validatedMembers = array();
$this->performAjaxValidation(array($model,$clientepreguntasecreta,$clientetarjeta), 'cliente-form');
if (isset($_POST['Cliente'],$_POST['ClientePreguntaSecreta'],$_POST['ClienteTarjeta'],$_POST['ClienteNumerotelefono'])) {
$model->setAttributes($_POST['Cliente']);
$clientepreguntasecreta->setAttributes($_POST['ClientePreguntaSecreta']);
$clientetarjeta->setAttributes($_POST['ClienteTarjeta']);
$clientenumerotelefono->setAttributes($_POST['ClienteNumerotelefono']);
$valid = $model->validate();
$valid = $clientepreguntasecreta->validate();
$valid = $clientetarjeta->validate() && $valid;
$detailOK = MultiModelForm::validate($clientenumerotelefono,$validatedMembers,$deleteItems);
if ($valid && $detailOK) {
if ($model->save(false))
{
$clientepreguntasecreta->idcliente = $model->idcliente;
$clientepreguntasecreta->save(false);
$clientetarjeta->idcliente = $model->idcliente;
$clientetarjeta->idusuario = 1;
if (empty($validatedMembers)){
$clientetarjeta->save(false);
$this->redirect(array('view','id'=>$model->idcliente));
}
else{
if ($detailOK && $clientetarjeta->save(false)){
$masterValues = array ('idcliente_tarjeta'=>$clientetarjeta->idcliente_tarjeta);
if (MultiModelForm::save($clientenumerotelefono,$validatedMembers,$deleteItems,$masterValues)){
$this->redirect(array('view','id'=>$model->idcliente));
}
}
}
}
}
}
$this->render('create', array( 'model' => $model,'clientepreguntasecreta'=>$clientepreguntasecreta,
'clientetarjeta'=>$clientetarjeta,'clientenumerotelefono'=>$clientenumerotelefono,
'validatedMembers' => $validatedMembers));
}
public function actionUpdate($id) {
$model = $this->loadModel($id, 'Cliente');
$clientepreguntasecreta = $this->loadModel($id, 'ClientePreguntaSecreta');
$clientetarjeta = $this->loadModel($id, 'ClienteTarjeta');
$clientenumerotelefono = $this->loadModel($clientetarjeta->idcliente_tarjeta, 'ClienteNumerotelefono');
$validatedMembers = array();
$this->performAjaxValidation(array($model,$clientepreguntasecreta,$clientetarjeta), 'cliente-form');
if (isset($_POST['Cliente'],$_POST['ClientePreguntaSecreta'],$_POST['ClienteTarjeta'],$_POST['ClienteNumerotelefono'])) {
$model->setAttributes($_POST['Cliente']);
$clientepreguntasecreta->setAttributes($_POST['ClientePreguntaSecreta']);
$clientetarjeta->setAttributes($_POST['ClienteTarjeta']);
if (!empty ($clientenumerotelefono)){
$clientenumerotelefono->setAttributes($_POST['ClienteNumerotelefono']);
}
$valid = $model->validate();
$valid = $clientepreguntasecreta->validate();
$valid = $clientetarjeta->validate() && $valid;
$detailOK = MultiModelForm::validate($clientenumerotelefono,$validatedMembers,$deleteItems);
if ($valid && $detailOK) {
if ($model->save(false))
{
$clientepreguntasecreta->idcliente = $model->idcliente;
$clientepreguntasecreta->save(false);
$clientetarjeta->idcliente = $model->idcliente;
$clientetarjeta->idusuario = 1;
if (empty($validatedMembers)){
$clientetarjeta->save(false);
$this->redirect(array('view','id'=>$model->idcliente));
}
if ($detailOK){
$clientetarjeta->save(false);
$masterValues = array ('idcliente_tarjeta'=>$clientetarjeta->idcliente_tarjeta);
if (MultiModelForm::save($clientenumerotelefono,$validatedMembers,$deleteItems,$masterValues)){
$this->redirect(array('view','id'=>$model->idcliente));
}
}
}
}
}