मैंने इस ट्यूटोरियल से निर्देशों का पालन किया है: http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html, और एक साधारण श्रोता बनाया है, जो किसी इकाई के सम्मिलन या अद्यतन पर सिद्धांत द्वारा भेजे गए ईवेंट के लिए सुनता है। प्रीइंसर और पोस्टइन्सर्ट इवेंट ठीक काम करते हैं और एक नई इकाई के निर्माण पर प्रेषित होते हैं। हालांकि, preUpdate और postUpdate को इकाई के अद्यतन पर कभी भी बुलाया नहीं जाता है इससे कोई फर्क नहीं पड़ता। फ्लश पर भी यही है। एक साइड नोट के रूप में, मेरे पास एक कंसोल जेनरेट कंट्रोलर है जो मूल सीआरयूडी ऑपरेशंस का समर्थन करता है, और इसे बिना छूटे छोड़ दिया है।प्रीअपडेट और पोस्ट अपडेट ईवेंट घटनाओं पर ट्रिगर नहीं किए गए 2
नीचे कुछ कोड स्निपेट हैं जो मैं इसे करने के तरीके को प्रदर्शित करने के लिए कर रहा हूं।
config.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
श्रोता कार्यान्वयन (मैं अन्य कार्यों को छोड़ दिया और सादगी प्रयोजनों के लिए केवल postUpdate छोड़ दिया है)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
इकाई आईडी कभी नहीं प्रदर्शित किया जाता है, और स्क्रिप्ट के लिए जारी समारोह के अंत में मरने के बावजूद यह निष्पादन पूरा होने तक इसका निष्पादन पूरा हो गया है।
सच ... लेकिन , मुझे अन्य संस्थाओं और इकाई प्रबंधक का उपयोग करना होगा, और संभवतः अन्य सेवाएं, इसलिए यह एक अच्छा विचार नहीं होगा। वैसे भी, ऐसा लगता है कि अब समस्या हल हो गई है। मैंने सिम्फनी के नवीनतम संस्करण में अपडेट किया, कैश साफ़ कर दिया, और सब कुछ काम कर रहा है। – tomor
आह हाँ, अगर आप अन्य सेवाओं/संस्थाओं का उपयोग कर रहे हैं तो यह समझ में आता है कि इस तरह से नहीं जाना :) –