2017-01-12 1 views
0

나는 OctoberCMS의 새로운 사본을 설치하고 사용자 플러그인을 추가했으며 테마를 만들었습니다. 모든 것이 신선하고 플러그인을 수정하지 않았습니다. 이제 등록 페이지를 만들고 테스트했습니다. 양식 유효성 검사가 다소 재미있어 보인다. 모든 입력란을 비워두고 제출 버튼을 클릭하십시오.OctoberCMS 양식 검증 알림 문제

예기치 않은 알림 상자가 표시됩니다. 정상적으로 될 것 같은 -

Alert

그럼 내가 버튼을 폼 유효성 검사 필드 오류를 표시하는 두 번째 제출을 클릭합니다. 난 단지

Field alert

사람은 왜 이런 일이 생각을 갖고 .. 팝업 상자없이 경고의이 종류를 wannt?

답변

1

자바 스크립트 경고 name field is required은 모델의 유효성 검사 규칙을 통과하지 못한 양식을 제출했기 때문에 OctoberCMS의 AJAX 프레임 워크에서 throw됩니다.

사용자 모델을 확인하면 name 필드가 필요합니다.

public $rules = [ 'name' => 'required' ]; // no name was supplied 

여기에는 두 가지 옵션이 있습니다. JS

을 사용하여 제출하기 전에

  • 검증 폼 데이터

    $('button.submit').click(function(e){ 
         e.preventDefault(); // prevent submission 
    
        // check Form fields are valid 
    
         // then Submit form using the AJAX API - OnCreateUser 
    
         $.request('onCreateUser', { 
         data: {name : ..., surname: ....}, // Data Object 
         error: function(jqXHR, textStatus, error){ 
          // handle errors.. 
          } 
         }); 
        }); 
    
  • 통해 UR 사이트

    사용 글로벌 AJAX 핸들러 - 팝업이 표시되지 않습니다하지만 당신은 이러한 이벤트를 처리해야하고, 사용자에게 경고합니다

    또한
    $window.on('ajaxErrorMessage', function(event, message){ 
         // .... 
         event.preventDefault(); 
        }); 
        $window.on('ajaxError', function(event, context, status,jqXHR){ 
         // .... 
         event.preventDefault(); 
        }); 
    

당신이 당신의 완의 validator 클래스를 사용 권장 제출 된 데이터를 확인 및 제출 - 사용자 정의 유효성 검사 규칙/메시지를 추가 할 수도 있습니다.

public function onCreateUser() 
    { 
     if (Request::ajax()) { 

      $customMessages = [ 
      'name.required' => 'Name Field is required', 
      'email.required' => 'Email field is required', 
      ]; 

      $customAttributes = [ 
      'email' => 'Email', 
      'name' => 'Name', 
      ]; 

      $data = post(); 
      $rules['name'] = 'required'; 
      $rules['email'] = 'required'; 


      $validation = Validator::make($data, $rules,$customMessages, $customAttributes); 
      if ($validation->fails()) { 
       $messages = json_encode($validation->messages(), true); 
       throw new ValidationException(array(
        'title' => 'Error Creating User', 
        'message' => $messages 
       )); 
      } 

      .......... 

     } 
    }