Burada verilen örneğe göre basit bir etkinlik aboneliği oluşturmaya çalışıyorum - http://symfony.com/doc/master/components/event_dispatcher/introduction.html. İşteSymfony2 olay abonesi dinleyicileri çağırmıyor
namespace CookBook\InheritanceBundle\Event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\Event;
class Subscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
var_dump('here');
return array(
'event.sample' => array(
array('sampleMethod1', 10),
array('sampleMethod2', 5)
));
}
public function sampleMethod1(Event $event)
{
var_dump('Method 1');
}
public function sampleMethod2(Event $event)
{
var_dump('Method 2');
}
}
services.yml config var:
namespace CookBook\InheritanceBundle\Event;
final class EventStore
{
const EVENT_SAMPLE = 'event.sample';
}
İşte benim olay abone var:
İşte benim olay mağazası
kernel.subscriber.subscriber:
class: CookBook\InheritanceBundle\Event\Subscriber
tags:
- {name:kernel.event_subscriber}
Ve burada olay yükseltmek nasıl :
use Symfony\Component\EventDispatcher\EventDispatcher;
use CookBook\InheritanceBundle\Event\EventStore;
$dispatcher = new EventDispatcher();
$dispatcher->dispatch(EventStore::EVENT_SAMPLE);
Beklenen çıkışı:
string 'here' (length=4)
string 'Method 1' (length=8)
string 'Method 2' (length=8)
Gerçek çıkışı: Nedense
string 'here' (length=4)
, dinleyici yöntemleri diye almıyoruz. Bu kodun nesi yanlış bilen var mı? Teşekkürler.
Alkış, Tristan: bunu yaparsanız
Sizin örnek beklendiği gibi çalışır. Symfony'de bağımlılık enjeksiyonu anlayışımı tekrar gözden geçirmeliyim. – Prathap
Size daha çok veya daha az görüyorum sadece kopyala yapıştırılmış cevabım [burada] (http://stackoverflow.com/questions/17671825/how-to-take-advantage-of-kernel-terminate-inside-an-event-listener) burada referans vermeden kendi sorunuza - bir dahaki sefere orijinal cevaplayıcıya biraz kredi veriniz :) – nifr
Tamamen ben bağlantıyı farklı olduğu için bağlantı kurmamıştım, benim için zaten bir dinleyicideydim, o yüzden korktum şeyleri karıştırırdı. Ama cevabınız bu soru için tamamen geçerli. –