2013-11-01 19 views
5

Tôi cần phải duy trì các thực thể bổ sung khi các thực thể khác được duy trì hoặc cập nhật. Vì vậy, tôi đã tạo ra một giải pháp lấy cảm hứng từ bài đăng này: https://stackoverflow.com/a/11054101/1526162.Trình nghe không được gọi trong Lệnh điều khiển

config.yml:

services: 
    transaktion.chain: 
     class: Foo\BarBundle\Listener\Chain 

    transaktion.flush: 
     class: Foo\BarBundle\Listener\Flush 
     arguments: [ @doctrine.orm.entity_manager, @transaktion.chain ] 
     tags: 
      - { name: kernel.event_listener, event: kernel.response, method: onResponse, priority: 5 } 

    transaktion.listener: 
     class: Foo\BarBundle\Listener\TransaktionLogger 
     arguments: [ @transaktion.chain ] 
     tags: 
      - { name: doctrine.event_listener, event: postPersist } 
      - { name: doctrine.event_listener, event: postUpdate } 
      - { name: doctrine.event_listener, event: preRemove } 

Thông tin postPersist, postUpdate và preRemove sự kiện được thêm vào chuỗi và cuối cùng, các kernel.response bắt đầu Flush và entites bổ sung cần thiết được tạo ra. Mọi thứ đều hoạt động tốt.

Nhưng, khi tôi vẫn kiên trì bên trong Lệnh điều khiển, nó không hoạt động. Tôi nghĩ rằng không có sự kiện kernel.response. Có sự kiện hữu ích nào khác đang hoạt động với Bộ điều khiển và trong Lệnh điều khiển không?

Thông tin bổ sung: Tôi đang sử dụng Symfony 2.3

Trả lời

8

Sự kiện giao diện điều khiển đã được thêm vào Symfony 2.3.

Giới thiệu nhanh có thể được tìm thấy trong this blog post.

Bạn có thể tìm thấy tên sự kiện bảng điều khiển trong lớp Symfony\Component\Console\ConsoleEvents.

const ConsoleEvents::COMMAND = 'console.command'; 
const ConsoleEvents::TERMINATE = 'console.terminate'; 
const ConsoleEvents::EXCEPTION = 'console.exception'; 

Chỉ cần thêm thẻ console.terminate vào người đăng ký của bạn và bạn sẽ ổn.

tags: 
    - { name: kernel.event_listener, event: kernel.response, method: onResponse } 
    - { name: kernel.event_listener, event: console.terminate, method: onResponse } 
+0

Tôi đã làm việc trên điều đó, nhưng tôi đã không tìm được tên sự kiện phù hợp cho mục nhập thẻ. Btw: Có danh sách tất cả các sự kiện có sẵn trong tài liệu không? –

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