2015-04-06 11 views
10

Tôi có hai người đăng ký sự kiện A và B. Cả hai đều đã đăng ký sự kiện onFlush.Tôi có thể xác định thứ tự mà người nghe/người đăng ký sự kiện được gọi trong học thuyết không?

Tôi muốn đảm bảo rằng a::onFlush() luôn được gọi trước B::onFlush(). Tôi không thể tìm thấy bất kỳ tài nguyên nào về tài liệu này trong tài liệu.

Tôi sử dụng symfony2 vì vậy sẽ rất tuyệt nếu tôi chỉ có thể chuyển giá trị vào trong định nghĩa dịch vụ.

Trả lời

17

Thêm mức độ ưu tiên cho thẻ dịch vụ của bạn. Ưu tiên càng cao thì nó sẽ chạy sớm hơn.

services: 
    my.listener: 
     class: Acme\SearchBundle\EventListener\SearchIndexer 
     tags: 
      - { name: doctrine.event_listener, event: postPersist, priority: 100 } 
+3

Cảm ơn bạn! Tôi vừa khám phá ra điều này một mình. Điều đáng nói là nó cũng hoạt động với các thuê bao. – Jumi

+1

Thử nghiệm ban đầu ở đây dường như chỉ ra rằng cài đặt ưu tiên cho người đăng ký dường như không hoạt động. (Sử dụng symfony/doctrine hiện tại) – Jan

+1

@Jan Câu trả lời ở trên là đúng. Nếu bạn nghĩ rằng bạn đã tìm thấy một lỗi trong mã Symfony, bạn nên liên hệ với các nhà phát triển trên github. – Twifty

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