Quantcast
Channel: Yii Framework Forum
Viewing all articles
Browse latest Browse all 18717

Multimodelform

$
0
0
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));
                                            }
                                        
                                        }
                           

                                }
                	}
		}

Viewing all articles
Browse latest Browse all 18717

Trending Articles