2012-10-18 35 views
8

Tôi đang sử dụng các thành phần Symfony2 và Doctrine. Validation hoạt động tốt trên server side (constraints in Entities, vv) Những gì tôi muốn là xác nhận form (tùy chỉnh của riêng tôi được xây dựng mà không sử dụng thành phần Form Symfony) thông qua AJAX.Xác thực AJAX của Symfony2

Có cách nào để sử dụng thành phần Xác thực để xác thực các trường bằng AJAX không?

Hoặc tôi nên sử dụng plugin xác thực jQuery? Mà có vẻ không hợp lý kể từ đó sẽ có 2 xác nhận khác nhau được sử dụng.

Trả lời

9

Bạn có thể gửi biểu mẫu được tuần tự hóa qua AJAX và trả lại biểu mẫu được hiển thị từ phía máy chủ nếu nó chứa lỗi xác thực.

$.post($form.attr('action'), $form.serialize(), function (response) { 
    if (response.success) { 
     // do something on success 
    } else { 
     $form.replaceWith(response.form); 
    } 
}); 

Ở phía máy chủ, bạn kiểm tra xem đó là yêu cầu AJAX và trả lại response ở định dạng JSON.

+0

Cảm ơn bạn đã trả lời @elnur. Đây cũng là những gì tôi nghĩ nhưng bằng cách này tôi cần phải gửi mẫu để xem lỗi. Tôi muốn nó giống như jQuery Validate plugin khi người dùng bắt đầu gõ email ví dụ và nếu nó không đúng - thông báo được hiển thị. Nhưng tôi không muốn thực hiện một yêu cầu AJAX trên mỗi lần nhấn phím. –

+1

Vì nó không có ý nghĩa khi gửi một danh sách tất cả các email đã đăng ký tới JS trên trang tải đầu tiên - vì vấn đề bảo mật và các vấn đề khác - bạn sẽ phải thực hiện một yêu cầu AJAX. Bạn chỉ nên làm điều đó không phải trên mỗi lần nhấn phím, nhưng sau một số sự kiện hết thời gian hoặc 'thay đổi'. –

+0

Điều đó có ý nghĩa. Cảm ơn bạn! –

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