Có hai loại sự kiện:
DataEvent - read-only truy cập vào các dữ liệu mẫu. Các sự kiện 'Trước' và 'Đăng' là chỉ đọc.
FilterDataEvent - sự kiện cho phép sửa đổi dữ liệu biểu mẫu.
biểu mẫu.pre_bind DataEvent
được kích hoạt trước khi dữ liệu bị ràng buộc vào biểu mẫu. Kích hoạt bởi Symfony\Component\Form\Form::bind()
form.post_bind DataEvent
kích hoạt sau khi dữ liệu được liên kết với biểu mẫu. Kích hoạt bởi Symfony\Component\Form\Form::bind()
form.pre_set_data DataEvent
kích hoạt trước khi lĩnh vực được làm đầy với các dữ liệu mặc định. Kích hoạt bởi Symfony\Component\Form\Form::setData()
form.post_set_data DataEvent
kích hoạt sau khi lĩnh vực được làm đầy với các dữ liệu mặc định. Kích hoạt bởi Symfony\Component\Form\Form::setData()
form.bind_client_data FilterDataEvent
kích hoạt trước khi dữ liệu được liên kết với biểu mẫu. Kích hoạt bởi Symfony\Component\Form\Form::bind()
form.bind_norm_data FilterDataEvent
kích hoạt sau khi dữ liệu đã được bình thường hóa. Được kích hoạt bởi Symfony\Component\Form\Form::bind()
. Xem Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener
(bổ sung bởi các UrlType
cho một ví dụ)
form.set_data FilterDataEvent
kích hoạt khi dữ liệu mặc định đã được ràng buộc. Được kích hoạt bởi Symfony\Component\Form\Form::setData()
Tôi khuyên bạn nên poking quanh lớp biểu mẫu để có cảm nhận tốt hơn về thời điểm các sự kiện này được kích hoạt và cách bạn có thể sử dụng chúng.
Thực sự cảm ơn bạn, câu trả lời đã được chấp nhận! Trong khi đó tôi đang gặp một số vấn đề với các sự kiện hình thức, nếu bạn có một số thời gian rảnh rỗi có lẽ bạn có thể cho tôi một chút giúp đỡ: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- a-subscriber-of-a-form-event-in-symfony2 – Polmonino
Cần lưu ý rằng mô tả về các sự kiện biểu mẫu này chỉ hợp lệ đối với Thành phần biểu mẫu Symfony 2.0. Các sự kiện sau đây đã không được dùng nữa kể từ 2.1 và sẽ bị xóa là 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data'. Kể từ 2.1, các trình lắng nghe sự kiện biểu mẫu giờ đây nhận được một đối tượng 'FormEvent' thay vì các đối tượng' FilterDataEvent' và 'DataEvent' không được chấp nhận, sẽ bị loại bỏ trong 2.3. –
Hey @xanido, liên kết của bạn bị hỏng. – Mick