How to use single form to collect data for two or more models (CActiveForm and Ajax Validation edition)

Comparing #5 with #6

Revision #6 was created by resurtm resurtm on Oct 10, 2011, 11:58:52 AM.

Proper validation process of multiple models (according to the original article)

Content

[...]
$b=new Info;

$this->performAjaxValidation(array($a,$b));
if(isset($_POST['User'],$_POST['Info']))
{
        // populate input data to $a and $b
 
$a->attributes=$_POST['User']; $b->attributes=$_POST['Info']; if($a->save() && $b->save())
 
        // validate BOTH $a and $b
 
        $valid=$a->validate();
 
        $valid=$b->validate() && $valid;
 
        
 
        if($valid)
 
        {
 
            // use false parameter to disable validation
 
            $a->save(false);
 
            $b->save(false);
 
            
$this->redirect('index');         }
 
}
$this->render('create',array('a'=>$a,'b'=>$b));
}

protected function performAjaxValidation($models)
{
[...]