2012-03-13 31 views
5

Tôi cần ghi đè Ext.data.Connection để hiển thị Biểu mẫu đăng nhập. Tôi làm điều này tại thời điểm này trong Ext.application.launch hoạt động như mong đợi.Ghi đè Ext.data.Connection - Thực hành tốt nhất

Có thể trao đổi đoạn mã này ở một nơi nào đó khác biệt như trong tệp phụ không?

+0

Tại sao bạn muốn ghi đè Kết nối để hiển thị chính xác biểu mẫu đăng nhập? để trình bày người dùng với biểu mẫu đăng nhập nếu anh ta không được xác thực? – sha

+0

Chính xác. Và cũng có thể nếu phiên thời gian ra ngoài. –

+0

Tôi đã thêm trình xử lý toàn cầu cho các lỗi Ajax và phân tích các lỗi không được xác thực ở đó. Có lẽ đó là một cái gì đó mà sẽ phù hợp với bạn quá. – sha

Trả lời

6

Nếu bạn cần điều này chỉ để nhận ra khi người dùng không được xác thực, bạn có thể muốn cân nhắc thực hiện một việc khác. Giống như thêm trình xử lý vào Ajax singleton:

function addAjaxErrorHandler(object) { 

    Ext.Ajax.on('requestexception', function(conn, response, options, e) { 

     var statusCode = response.status, 
     errorText = null, 
     captionText = response.statusText; 

     // 404 - file or method not found - special case 
     if (statusCode == 404) { 
      Ext.MessageBox.alert('Error 404', 'URL ' + response.request.options.url + ' not found'); 
      return; 
     } 

     if (response.responseText != undefined) { 
      var r = Ext.decode(response.responseText, true); 

      if (r != null) { 

       // 401 - not authenticated. For some reason we don't have authentication cookie anymore 
       if (r.ErrorCode == 401) { 
        Ext.MessageBox.alert('Error', 'You must log in to use application', 
         function() { 
// do something when user is not authenticated 
         object); 
        return; 
       } 

       errorText = r.ErrorMessage; 
      } 

      if (errorText == null) 
       errorText = response.responseText; 
     } 

     if (!captionText) 
      captionText = 'Error ' + statusCode; 

     Ext.MessageBox.alert(captionText, errorText); 
    }, 
    object);   
} 

Sau đó, chỉ cần gọi hàm này từ hàm application.launch() của bạn và chuyển đối tượng ứng dụng để phạm vi nếu được xác định.

+0

Cảm ơn bạn rất nhiều, đây không phải là chính xác những gì tôi cần, nhưng nó chỉ cho tôi đi đúng hướng. :) –

+0

Rất vui được trợ giúp :) – sha

+0

trông như thế này sẽ không được thực thi nếu bạn có trình xử lý lỗi trong những người khác ajax yêu cầu cuộc gọi. – jujule

Các vấn đề liên quan