Hi all! help me pls fix mi code…
After submitting the form, it passes the validation, but does not fire the save method defined in the model SignUp
public function actionSignUp()
{
$model = new SignUpForm();
$userData = Yii::app()->request->getPost('UserExt');
$companyData = Yii::app()->request->getPost('CompanyExt');
var_dump($userData);
var_dump($companyData);
if ($userData && $companyData) {
$model->attributes = Yii::app()->request->getPost('SignUpForm');
$model->user->attributes = $userData;
$model->company->attributes = $companyData;
if ($model->validate() && $model->save()) {
$this->redirect($this->createUrl('index'));
} else {
Yii::app()->user->setFlash('error', 'Invalid input data');
var_dump($model->validate());//true
var_dump($model->save());//false
}
}
SignUpForm.php
class SignUpForm extends CFormModel {
public $company;
public $user;
public $password;
public $password_repeat;
public function init() {
$this->company = new CompanyExt();
$this->user = new UserExt();
}
public function rules() {
return array(
array('password, password_repeat', 'required'),
array('password', 'compare'),
);
}
public function save() {
$transaction = Yii::app()->db->beginTransaction();
echo " transation " . var_dump($transaction);
try {
if($this->company->save()) {
$this->user->company_id = $this->company->id;
if($this->user->save()) {
$transaction->commit();
return true;
}
}
} catch(CException $e) {
$transaction->rollback();
}
$this->addErrors(array_merge($this->user->errors, $this->company->errors));
return false;
}
public function onAfterValidate($event) {
$this->user->password = $this->password;
$this->user->encrypted_password = crypt($this->password);
}
}
After post i see "Invalid input data"…