2017-05-09 33 views

回答

1

第一步:鑑於

<?php $form = ActiveForm::begin(['enableAjaxValidation' => true]); ?> 

第二步:在模型函數

public function checkCodeMeli() 
    { 
     $code_melli = $this->code_meli; 

     if (!preg_match('/^[0-9]{10}$/', $code_melli)) { 
      $this->addError('code_meli', 'کد ملی باید 10 رقم باشد'); 
     } 

     for ($i = 0; $i < 10; $i++) { 
      if (preg_match('/^' . $i . '{10}$/', $code_melli)) { 
       $this->addError('code_meli', 'کد ملی صحیح وارد نشده است'); 
      } 
     } 

     for ($i = 0, $sum = 0; $i < 9; $i++) { 
      $sum += ((10 - $i) * intval(substr($code_melli, $i, 1))); 
     } 

     $ret = $sum % 11; 
     $parity = intval(substr($code_melli, 9, 1)); 
     if (($ret < 2 && $ret == $parity) || ($ret >= 2 && $ret == 11 - $parity)) { 
      return true; 
     } 
     else { 
      $this->addError('code_meli', 'کد ملی صحیح وارد نشده است'); 
     } 
    } 

第三步:規則型號

['code_meli', 'checkCodeMeli'], 

第四步:在控制器

$model = new Model(); 

if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { 
    Yii::$app->response->format = Response::FORMAT_JSON; 
    return ActiveForm::validate($model); 
}