2012-07-24 34 views
5

validation.yml tôi được đưa ra:Symfony-2 đưa ra thông báo lỗi nhiều hơn một xác nhận

task: 
     - Email: 
       message: The email "{{ value }}" is not a valid email. 
     - MinLength: { limit: 50, message: You must be 50 or under to enter. } 

Vấn đề của tôi là nếu tôi đưa ra "sai-email" trong nhiệm vụ lĩnh vực nó mang lại cho hai thông báo lỗi:

The email "wrong-email" is not a valid email. 
You must be 50 or under to enter. 

Thực ra, tôi chỉ muốn hiển thị một thông báo lỗi tại một thời điểm. Điều đó có nghĩa là nó sẽ kiểm tra xác nhận "MinLength" chỉ khi đó là một email hợp lệ.

Trả lời

6

Xác thực trình tự có thể được thực hiện bằng cách sử dụng chuỗi nhóm. Tôi đã sửa các trình tự nhóm cho trình điều khiển YAML chỉ ngày hôm nay, vì vậy bạn có thể cần đợi bản phát hành tiếp theo của nhánh 2.0 hoặc master.

MyEntity: 
    group_sequence: [MyEntity, Extra] 
    properties: 
     task: 
      - Email: { message: ... } 
      - MinLength { limit: 50, message: ..., groups: Extra } 

Bây giờ, các ràng buộc trong nhóm "Thêm" sẽ chỉ được xác thực nếu tất cả các ràng buộc trong nhóm "MyEntity" (tức là nhóm mặc định) thành công.

+1

Mô tả của bạn có vẻ như xác thực không thành công trên một trường khác (rơi vào nhóm MyEntity mặc định) sẽ dừng xác thực 'MinLength' ngay cả khi 'Email' được chuyển. Đó là trường hợp? Tôi sẽ muốn một giải pháp mà mỗi lĩnh vực được xác nhận cho đến khi nó không thành công, bất kể các lĩnh vực khác. – Craig

+1

Tìm kiếm một giải pháp tương tự quá @Craig. Một cái gì đó giống như tùy chọn 'breakChainOnFailure' những ngày trong ZF1: http://framework.zend.com/manual/1.12/en/zend.form.elements.html - Chúng ta có điều này trong SF2 @webmozart? – webDEVILopers

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