2017-01-12 9 views
0

私はOctoberCMSの新しいコピーをインストールし、Usersプラグインを追加してテーマを作成しました。すべてが新鮮で、プラグインの変更は行われていません。今度は登録ページを作成してテストしました。フォームの検証はちょっと面白いようです。私はすべてのフィールドを空のままにして、送信ボタンをクリックします。OctoberCMSフォーム検証アラートの問題

このようなアラートボックスがスローされますが、予期しないことです。

Alert

それから私は二度目のフォームの検証がフィールドエラーを示して送信ボタンをクリックした場合 - それは通常であるように。私は誰もが、なぜこの出来事があるという考えを持っている

Field alert

..ポップアップボックスなしアラートのこの種だけをwannt?

答えて

1

モデルの検証ルールに合格していないフォームを送信したため、JavaScriptのアラートname field is requiredがOctoberCMSのAJAXフレームワークによってスローされます。

ユーザーモデルを確認してください。nameフィールドが必要になることがあります。

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

ここでは2つのオプションがあります。 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.. 
          } 
         }); 
        }); 
    
  • ウルサイトの

    使用グローバル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 
       )); 
      } 

      .......... 

     } 
    }