2016-09-26 12 views
0

こんにちはユーザーModelpermisssionモデルがあります。ユーザーフォームには、管理者と市の2つのフィールドがあります。許可テーブルでは、requiredの場合は1を、不要の場合は0を設定します。そのUSER_ROLEため実行時のYii検証?

Permission table 

user_role  supervisor  city 
1     1    1 
2     1    0 
3     0    0 

よう

私は、ユーザーに役割を選択したときに、今私が欲しい1つの、必要なルールがアクティブに設定されている場合、都市とスーパーバイザーを形成するが

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'lms-user-form', 
    'enableAjaxValidation'=>true, 
)); ?> 

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

    <?php echo $form->errorSummary($model); ?> 
<div class="row"> 
     <?php echo $form->labelEx($model,'user_role'); ?> 
     <?php echo $form->drodownList($model,'user_role',array(); ?> 
     <?php echo $form->error($model,'user_role'); ?> 
    </div> 
    <div class="row"> 
     <?php echo $form->labelEx($model,'user_first_name'); ?> 
     <?php echo $form->textField($model,'user_first_name',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'user_first_name'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'user_last_name'); ?> 
     <?php echo $form->textField($model,'user_last_name',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'user_last_name'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'user_password'); ?> 
     <?php echo $form->textField($model,'user_password',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'user_password'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'user_city'); ?> 
     <?php echo $form->textField($model,'user_city',array('size'=>10,'maxlength'=>10)); ?> 
     <?php echo $form->error($model,'user_city'); ?> 
    </div> 
<div class="row"> 
     <?php echo $form->labelEx($model,'user_supervisor'); ?> 
     <?php echo $form->textField($model,'user_supervisor',array('size'=>10,'maxlength'=>10)); ?> 
     <?php echo $form->error($model,'user_supervisor'); ?> 
    </div> 

    <div class="row buttons"> 
     <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> 
    </div> 

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

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

私はこのようなものを使用しますがこれは仕事ではない

私は約addErrorを知っているが、私はを望むが発生する

答えて

0

カスタム検証を使用していないのはなぜですか?

問題を解決するためにこれを試してください。

オプション1:

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'lms-user-form', 
    'enableAjaxValidation'=>true, 
    'enableClientValidation'=>true, 
    'clientOptions'=>array(
    'validateOnSubmit'=>true), 
)); ?> 

そして、あなたの行動、使用中のこの1

$this->performAjaxValidation($model); 

オプション2:

上記のように追加して、カスタム検証:

array('user_role', 'customValidation'), 

public function customValidation($attribute, $params) 
    { 
     $user_role = $this->attributes['user_role']; 
     $permiss = Permission::model()->findByAttributes(array('user_role' => $user_role)); 
     if ($permiss->user_city && $permiss->user_supervisor) { 
      if ($this->user_city == '') { 
       $this->addError('user_city', "User city cannot be blank."); 
      } 
      if ($this->user_supervisor == '') { 
       $this->addError('user_supervisor', 
        "User supervisor cannot be blank."); 
      } 
     } else if ($permiss->user_city) { 
      if ($this->user_city == '') { 
       $this->addError('user_city', "User city cannot be blank."); 
      } 
     } elseif ($permiss->user_supervisor) { 
      if ($this->user_supervisor == '') { 
       $this->addError('user_supervisor', 
        "User supervisor cannot be blank."); 
      } 
     } 
    } 

そして、もう1つはあなたがねperformAjaxValidation($ model) method.soにフォーム名を追加して動作させるだけです。

両方の方法で、ajax検証が機能します。助けて欲しいと思っています。

関連する問題