2012-09-04 4 views
10

Cách ghi đè thông báo xác thực biểu mẫu trong symfony2. Mặc dù có một lớp mô hình liên quan đến tệp validation.xml. Tôi nghĩ rằng nó xác nhận một hình thức dựa trên html5.Ghi đè thông báo Xác thực Mẫu trên symfony2

"Vui lòng khớp với định dạng được yêu cầu", "Vui lòng điền vào trường này". Có cách nào để ghi đè thông báo xác thực này không.

Xin hãy giúp tôi trong vấn đề này, tôi bị mắc kẹt trong hơn một ngày, như tôi hoàn toàn mới để symfony

Trả lời

12

Những tin nhắn mà bạn thấy là HTML5 thư xác nhận mà được tạo ra bởi trình duyệt. Nếu bạn muốn ghi đè chúng, bạn cần thêm thuộc tính oninvalid vào thẻ đầu vào được liên kết với trường đó. Bạn có thể làm điều này theo hai cách:

Trong điều khiển hoặc hình thức của bạn loại, thêm thuộc tính này đến lĩnh vực hình thức:

$builder->add('email', 'email',array(
    'attr'=>array('oninvalid'=>"setCustomValidity('Would you please enter a valid email?')") 
)); 

Hoặc, trong mẫu cành lá của bạn, thêm thuộc tính này khi vẽ các lĩnh vực hình thức:

{{ form_row(form.email, { 'attr': {'oninvalid': "setCustomValidity('Please give me a nice email')"} }) }} 
+0

Cảm ơn, đây là những gì tôi đang tìm kiếm. Một cách kịp thời :) – satdev86

+0

Nhưng nếu bạn làm theo cách này, bạn nhập địa chỉ email không hợp lệ, sau đó lỗi xuất hiện, địa chỉ email của bạn chính xác nhưng lỗi vẫn đang xuất hiện. Tại sao? – craphunter

+3

Câu trả lời của Carlos gần như đúng, nhưng có một số vấn đề. Xem "http://stackoverflow.com/questions/10361460/how-can-i-change-html-5-form-validation-errors-default-messages" để giải quyết sự cố. – IsraelWebDev

3

Bạn có thể thay đổi thông điệp của mỗi validator nhờ vào tùy chọn tin nhắn khi tuyên bố khẳng định:

/** 
    * @ORM\Column(type="string", length=255, unique=true) 
    * @Assert\NotBlank(
    *  message="You have to choose a username (this is my custom validation message).", 
    *  groups={"registration", "account", "oauth"} 
    *) 

Ngoài ra, bạn có thể áp dụng bản dịch bằng cách tạo tệp MyBundle/Tài nguyên/bản dịch/validators.fr.xliff

+0

Không, thư mà anh ta đề cập đến là thông báo xác thực HTML5 được tạo bởi trình duyệt –

+0

Tôi không thấy điều đó ^^ ' – Sybio