model not displaying validation errors

i am new to yii,my cactiverecord doesnt validate when save() is called

model codes




 public function rules()

    {

        // NOTE: you should only define rules for those attributes that

        // will receive user inputs.

        return array(

            array('firstName, secondName, lastName, gender, phoneNumber, email, address, education_background, basicSalary, departmentID, roleID, contractID, employed_by, reports_to, date_employed', 'required'),

            array('phoneNumber, departmentID, roleID, contractID', 'numerical', 'integerOnly'=>true),

            array('firstName, secondName, lastName', 'length', 'max'=>20),

            array('firstName, secondName, lastName','type', 'type'=>'char','message'=>'This field accepts characters only'),

            array('email','email'),

        );

    }



controller codes




public function actionCreate() {


    $model=new Employee;

    $message="email already exists";

    // Uncomment the following line if AJAX validation is needed

    // $this->performAjaxValidation($model);


    if(isset($_POST['Employee']))

    {

        $model->attributes=$_POST['Employee'];

        $model->password=md5(strtolower($model->firstName.'123'));

        $to=$model->email;

        $mailmessage="Dear ".$model->lastName." ".$model->firstName."<br> Thanks for your interest in working for XXX Company.

                <br>Please note your login details are :- Email:".$model->email." Password: ".$model->firstName."123<br>

                        You can change password to your preference choice when you login.<br>

                        Kindly Regards<br>

                        HRMS administrator";

        //echo $model->password; exit;

        $criteria=new CDbCriteria();

        $criteria->select='email';

        $criteria->condition='email=:email';

        $criteria->params=array(':email'=>$model->email);

        if($check=Employee::model()->exists($criteria)){


            $this->render('create',array(

                    'model'=>$model,'message'=>$message));

            exit;

            }else{

                $model->save();

                /*if($model->validate()){

                    echo 'valideted';

                    exit;

                }

                else {


                    echo 'not valid';

                    print_r($model->getErrors());

                }

                exit;

                //$model->getErrors();*/


               /*if(){

                echo 'saved';

               }

               else{

                print_r($model->getErrors());

               }

               exit;*/

                $this->mailsend($to,$mailmessage);

                // $cmd=Yii::app()->db->createCommand('select max(employee.employeeID),role.roleName,employee.departmentID  FROM employee JOIN role ON employee.roleID=role.roleID');

                $cmd=Yii::app()->db->createCommand('select employee.employeeID,role.roleName,department.departmentName  FROM employee JOIN department ON employee.departmentID=department.departmentID JOIN role ON employee.roleID=role.roleID

                ORDER BY employee.employeeID DESC LIMIT 1');


                $rstid=$cmd->queryRow(false);

                $id=$rstid[0];

                $role=$rstid[1];

                $dep=$rstid[2];                 

                $history=Yii::app()->db->createCommand();

                $history->insert('history',array(

                    'employeeID'=>$id,

                    'action_to'=>'as '.$role,

                    'department'=>$dep,

                    'reports_to'=>$model->reports_to,

                    'date'=>$model->date_employed,

                    ));

                Yii::app()->session['id']=$model->employeeID;

                $this->redirect(array('view','id'=>$model->employeeID));


            }

        }


    $this->render('create',array(

        'model'=>$model,'message'=>''

    ));

}

view codes





        <div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(

    'id'=>'employee-form',

    // Please note: When you enable ajax validation, make sure the corresponding

    // controller action is handling ajax validation correctly.

    // There is a call to performAjaxValidation() commented in generated controller code.

    // See class documentation of CActiveForm for details on this.

    'enableAjaxValidation'=>false,

)); ?>


    <p class="note">Fields with <span class="required">*</span> are required.</p>


    <?php echo $form->errorSummary($model); ?>

<table>

<tr><td><?php echo $form->labelEx($model,'firstName'); ?></td>

<td><?php echo $form->textField($model,'firstName',array('size'=>20,'maxlength'=>20)); ?></td>

<td><?php echo $form->error($model,'firstName'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'secondName'); ?></td>

<td><?php echo $form->textField($model,'secondName',array('size'=>20,'maxlength'=>20)); ?></td>

<td><?php echo $form->error($model,'secondName'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'lastName'); ?></td>

<td><?php echo $form->textField($model,'lastName',array('size'=>20,'maxlength'=>20)); ?></td>

<td><?php echo $form->error($model,'lastName'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'gender'); ?></td>

<td><?php echo $form->dropDownList($model,'gender',array('Male'=>'Male','Female'=>'Female')); ?></td>

<td><?php echo $form->error($model,'gender'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'phoneNumber'); ?></td>

<td><?php echo $form->textField($model,'phoneNumber'); ?></td>

<td><?php echo $form->error($model,'phoneNumber'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'email'); ?>


</td>

<td><?php echo $form->textField($model,'email',array('size'=>50,'maxlength'=>50)); ?></td>

<td style='color:red;'><?php echo $form->error($model,'email'); ?>

<?php  echo $message; ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'address'); ?></td>

<td><?php echo $form->textArea($model,'address',array('size'=>60,'maxlength'=>100)); ?></td>

<td><?php echo $form->error($model,'address'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'education_background'); ?></td>

<td><?php echo $form->textArea($model,'education_background',array('size'=>60,'maxlength'=>300)); ?></td>

<td><?php echo $form->error($model,'education_background'); ?></td></tr>




<tr><td><?php echo $form->labelEx($model,'roleID'); ?></td>

<td><?php echo $form->dropDownList($model,'roleID',CHtml::listData(Role::model()->findAll(),'roleID','roleName'),

        array(


        'ajax' => array(

        'type'=>'POST', 

        'dataType'=>'json',

        'url'=>CController::createUrl('employee/getSalary'),

        'success'=>'function(data){

        $("#Employee_basicSalary").val(data.data1);

}'),        

'prompt'=>'select'

)); ?></td>

<td><?php echo $form->error($model,'roleID'); ?></td></tr>


<tr>


<td><?php echo $form->labelEx($model,'basicSalary'); ?></td>

<td>

<?php echo $form->textField($model,'basicSalary',array('size'=>10,'maxlength'=>10)); ?>

</td>

<td><?php echo $form->error($model,'basicSalary'); ?></td>





</tr>

<tr><td><?php echo $form->labelEx($model,'departmentID'); ?></td>

<td><?php echo $form->dropDownList($model,'departmentID',CHtml::listData(Department::model()->findAll(),'departmentID','departmentName')); ?></td>

<td><?php echo $form->error($model,'departmentID'); ?></td></tr>


<tr><td><?php echo $form->labelEx($model,'date_employed'); ?></td>

<td>    <?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(

                           'name'=>'Employee[date_employed]',

                            'id'=>'Employee_date_employed',

                            'value'=>$model->date_employed,

                                'options'=>array(

                                        'dateFormat'=>'yy-mm-dd',

                                'showAnim'=>'fold',

                                ),

                                'htmlOptions'=>array(

                                'style'=>'height:20px;'

                                ),

                        )); 

         ?></td>

<td><?php echo $form->error($model,'date_employed'); ?>





</td></tr>

<tr><td><?php echo $form->labelEx($model,'contractID'); ?></td>

<td>    <?php echo $form->dropDownList($model,'contractID',CHtml::listData(Contract::model()->findAll(),'contractID','contractName'),

        array(

        'ajax' => array(

        'type'=>'POST', 

        'dataType'=>'json',

        'url'=>CController::createUrl('employee/getContDate'),

        'success'=>'function(data){

        $("#Employee_endcontract").val(data.data1);

}'),        

'prompt'=>'select'

)); ?></td>

<td><?php echo $form->error($model,'contractID'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'endcontract'); ?></td><td><?php echo $form->textField($model,'endcontract');?></td></tr>

<tr><td><?php echo $form->labelEx($model,'employed_by'); ?></td>

<td><?php echo $form->textField($model,'employed_by',array('size'=>50,'maxlength'=>50)); ?></td>

<td><?php echo $form->error($model,'employed_by'); ?></td></tr>

<tr><td><?php echo $form->labelEx($model,'reports_to'); ?></td>

<td><?php echo $form->dropDownList($model,'reports_to',array('Senior Manager'=>'Senior Manager','Assistant Manager'=>'Assistant Manager','System Administrator'=>'System Administrator')); ?></td>

<td><?php echo $form->error($model,'reports_to'); ?></td></tr>


<tr><td></td><td>   <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?></td><td></td></tr>

</table>


<?php $this->endWidget(); ?>


</div><!-- form -->

this model does not validate and also doesnot display errors,any help please?

You should check if save() is successful first because if not the form is updated with error messages.




if ($model->save()) {

// .... if OK

}



It looks like now you are redirecting user no matter what with no chance to see validation result.

Hi

You should set your


'enableAjaxValidation'=>true

currently it is set to false, and uncomment line


$this->performAjaxValidation($model)

in your controller or put


if ($model->validate())

but not both.

Hope this helps :)