2017-12-07 16 views
1

입력에 대한 사용자 지정 유효성 검사기 규칙을 추가하려고 할 때 약간의 문제가 있습니다. 이것은 내 코드입니다.Yii2의 사용자 지정 필드 검사기 클라이언트 쪽

class Category extends \yii\db\ActiveRecord{ 

    /** 
    * @inheritdoc 
    */ 
    public static function tableName() 
    { 
     return 'cat'; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function rules() 
    { 
     return [ 
      [['cat_cod','cat_deep','cat_father'], 'required'], 
      //other rules 
      [['cat_cod'], 'test'], 

     ]; 
    } 
    public function test($attribute){ 
     $cat_cod = $this->$attribute; 
     if($cat_cod == 'test'){ 
      $this->addError($attribute,"Error Test"); 
     } 
    } 

모델 그래서, 이것은 단지 테스트입니다,하지만 난 내 양식을 제출할 때 그것을 잘 작동하지만 클라이언트 측 validaton에서 작동하지 않습니다.

는 cat_cod가 비어있는 경우 : 나 테스트가 클라이언트 측에서 확인하지 않을 쓸 때

cat_cod is empty

내가 입력 필드 2 화상에서

enter image description here

에서 테스트를 쓰면

업데이트 Afte Yupik Comments, 서버 측 유효성 검사가 제대로 작동하므로 클라이언트 측 유효성 검사를 추가하려면 AjaxValidation을 구현해야합니다. 그래서 나는이 문제를 해결할 수있는 방법을 내 컨트롤러에서 지금이

$form->field($model, 'cat_cod',['enableAjaxValidation' => true])->textInput(); 

처럼 하나의 필드에 아약스 검증을 활성화 한? 문서화가 명확하지 않습니다. 이것은 내가 시도한 것입니다.

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

답변

0

이것은 서버 측 유효성 검사기입니다. 클라이언트 측 유효성 검사기를 추가하려면 whenClient을 사용하여 규칙을 적용해야하는지 확인하십시오. , 내가 아는 더 docs

+0

음을 읽어하지만 난이 튜토리얼 [튜토리얼]을 따라 (https://www.youtube.com/watch?v=immWONYVgTs)과는 아약스 검증이기 때문에 자신의 사용자 정의 유효성 검사를 완벽하게 완벽하게 –

+0

이 작업의 작동 . 아약스 유효성 검사 사용, 컨트롤러에서 처리하고 작동합니다. – Yupik