में कस्टम ईवेंट कैसे बनाएं I user_logged
नामक कस्टम ईवेंट बनाना चाहते हैं ताकि मैं अपने श्रोताओं को उन घटनाओं से जोड़ सकूं।symfony2
मैं कुछ कार्यों को निष्पादित करने के लिए जब भी उपयोगकर्ता में लॉग इन किया है चाहता हूँ।
में कस्टम ईवेंट कैसे बनाएं I user_logged
नामक कस्टम ईवेंट बनाना चाहते हैं ताकि मैं अपने श्रोताओं को उन घटनाओं से जोड़ सकूं।symfony2
मैं कुछ कार्यों को निष्पादित करने के लिए जब भी उपयोगकर्ता में लॉग इन किया है चाहता हूँ।
एक वर्ग जो Symfony\Component\EventDispatcher\Event
फैली बनाएँ।
फिर, घटना प्रेषण करने के लिए घटना डिस्पैचर सेवा का उपयोग करें:
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('custom.event.identifier', $event);
तुम इतनी तरह अपने घटना श्रोता सेवा रजिस्टर कर सकते हैं:
tags:
- { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
इस उत्तर छोटा सा answer का विस्तार कर रहा है।
services.yml
custom.event.home_page_event:
class: AppBundle\EventSubscriber\HomePageEventSubscriber
tags:
- { name: kernel.event_listener, event: custom.event.home_page_event, method: onCustomEvent }
AppBundle/EventSubscriber/HomePageEventSubscriber.php
namespace AppBundle\EventSubscriber;
class HomePageEventSubscriber
{
public function onCustomEvent($event)
{
var_dump($event->getCode());
}
}
AppBundle/घटना/HomePageEvent.php
namespace AppBundle\Event;
use Symfony\Component\EventDispatcher\Event;
class HomePageEvent extends Event
{
private $code;
public function setCode($code)
{
$this->code = $code;
}
public function getCode()
{
return $this->code;
}
}
कहीं भी आप घर में उदाहरण के लिए चाहते हैं, पेज नियंत्रक
use AppBundle\Event\HomePageEvent;
// ...
$eventDispatcher = $this->get('event_dispatcher');
$event = new HomePageEvent();
$event->setCode(200);
$eventDispatcher->dispatch('custom.event.home_page_event', $event);
बढ़िया! बहुत उपयोगी! – iamjc015
@JCFrane किसी भी समय आपका स्वागत है! –
अच्छा जवाब। इसके अलावा, यहां और अधिक विवरण हैं: http://symfony.com/doc/current/components/event_dispatcher/introduction.html – gview
दरअसल, लेकिन यह शुरू करने के लिए एक आसान तरीका है। – Lusitanian
उत्कृष्ट उत्तर !!, अब एकमात्र प्रश्न यह है कि कस्टम इवेंट भेजने के लिए सबसे अच्छी जगह कहां है ?, शायद एक सेवा? – Nico