2015-05-11 6 views
0

Я новичок в yii. Мой ActiveRecord не проверяет, когда вызывается функция save().модель не отображает ошибки проверки

модели коды: коды

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'), 
     ); 
    } 

контроллер:

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'=>'' 
    )); 
} 

просмотреть коды

 <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 --> 

Эта модель не проверяет, а также не отображаются сообщения об ошибках. Любая помощь, пожалуйста?

+0

Вы проверяете, что вы перешли в другое состояние? in else {echo "hello"; exit;} и ​​удалить весь код только сейчас. и попробуйте, и если это произойдет, тогда позвоните по телефону –

+0

, спасибо за ваш комментарий, это помогло мне устранить тревожные ошибки в моих кодах контроллеров. – bcs5689

ответ

0
  1. Вы можете проверить уникальность электронной почты в модели (будет полезно использовать scenarios).
  2. Вы можете создавать отношения с таблицами разделов и ролей в своей модели.

код модели:

public function rules() { 
    // it will be good to use scenarios 
    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'), 
     array('email','unique'), 
    ); 
} 

public function relations() { 
    return array(
     'department' => array(self::BELONGS_TO, 'Department', 'departmentID'), // Department CActivRecord model of `department` table 
     'role' => array(self::BELONGS_TO, 'Role', 'roleID'), // Role CActivRecord model of `role` table 
    ); 
} 

Контроллер создать код действия:

public function actionCreate() { 

    $model=new Employee; 
    // 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')); 

     if($model->save()) { 
      $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"; 
      $this->mailsend($model->email, $mailmessage); 

      Yii::app()->db->createCommand()->insert('history',array(
       'employeeID'=>$model->employeeID, 
       'action_to'=>'as '.$model->role->roleName, 
       'department'=>$model->department->departmentName, 
       '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, 
    )); 
} 

Также вы можете установить enableClientValidation в true в CActiveForm виджет, чтобы включить проверку JS.

+0

Спасибо, alot @ taron Saribekyan, это будет иметь для меня большое значение. – bcs5689

+0

@ bcs5689 Thank ты тоже –

Смежные вопросы