public function actionAddInstitution() { $institution = new Institution(); $address = new Address(); $errors = array(); if (!empty($_POST)) { $institution->attributes = $_POST['Institution']; if (!$institution->validate()) { $errors = $institution->getErrors(); } $address->attributes = $_POST['Address']; if ($address->validate()) { $errors = array_merge($errors, $address->getErrors()); } if (empty($errors)) { if (!$institution->save()) { throw new Exception("Unable to save institution: " . print_r($institution->getErrors(), true)); } if (!$address->save()) { throw new Exception("Unable to save institution address: " . print_r($address->getErrors(), true)); } $institution->addAddress($address); if (!$institution->contact->save()) { throw new Exception("Institution contact could not be saved: " . print_r($institution->contact->getErrors(), true)); } Audit::add('admin-Institution', 'add', $institution->id); $this->redirect(array('/admin/editInstitution?institution_id=' . $institution->id)); } } $this->render('/admin/addinstitution', array('institution' => $institution, 'address' => $address, 'errors' => @$errors)); }