Symfony 使用事件订阅服务器
我有活动订阅者:Symfony 使用事件订阅服务器,symfony,symfony-2.6,Symfony,Symfony 2.6,我有活动订阅者: static public function getSubscribedEvents() { return array( 'event_1' => 'onEvent1', 'event_2' => 'onEvent2', ); } public function onEvent1() { } public function onEvent2() { } 它工作正常,但我希望侦听器方法onEvent1仅在成功执行event
static public function getSubscribedEvents()
{
return array(
'event_1' => 'onEvent1',
'event_2' => 'onEvent2',
);
}
public function onEvent1()
{
}
public function onEvent2()
{
}
它工作正常,但我希望侦听器方法onEvent1仅在成功执行eventevent_1后才能工作。我知道我可以为事件的方法设置优先级,但这并不能解决我的问题。有什么想法吗?谢谢。您可以使用私有属性保存操作状态。在事件_1中,如果操作成功,您可以更新标志,然后在事件_2中检查标志是否处于所需状态:
class MyEventSubscriber{
private $event1Successful = false;
static public function getSubscribedEvents()
{
return array(
'event_1' => 'onEvent1',
'event_2' => 'onEvent2',
);
}
public function onEvent1()
{
if(myOperation()){
$this->event1Successful = true;
}
}
public function onEvent2()
{
if($this->event1Successful){
// your code here
}
}
}
布朗查再次感谢您的回复。但我做的有点不同: 我的订户事件
static public function getSubscribedEvents()
{
return array(
'FirstEvent' => 'onMethod1',
'SecondEvent' => 'onMethod2',
);
}
public function onMethod1(FirstEvent $event)
{
if ($event->getResult() == 'ready') {
//code
}
}
public function onMethod2()
{
}
第一件事
class FirstEvent extends Event
{
private $result = 'no ready';
public function setResult()
{
$this->result = 'ready';
}
public function getResult()
{
return $this->result;
}
}
第一事件侦听器
class FirstEventListener
{
public function onFirstEvent(FirstEvent $event)
{
//code
$event->setResult();
}
}
它工作正常:)