Symfony2 中event的问题
天蓬老师
天蓬老师 2017-05-16 16:44:46
[PHP讨论组]

今天看了看symfony中event章节,自己也动手做了个实验,但是有一个地方不是很明白。
我首先定义了一个Eents的枚举类用于管理所有的event

在HomepageBundle定义了一个event

container = $container;
  }
}

然后在FileBundle中定义了一个listener


container->get("logger")->info("我执行了"); // ... } }

在service.xml中注册服务

    
        
                
        
    

最后我在HomepageBundle的controller中触发事件

container);
      // 在controller里取事件分发器
      $dispatcher = $this->get('event_dispatcher');
      $dispatcher->dispatch(Events::HOMEPAGE_VISIT, $event);
      return array('name' => $name);
    }

}

先在我通过http://localhost/fm/web/app_dev.php/home/index访问
能够正确的打印出"我执行了"的日志
一切好像都没有问题,说明事件成功被触发执行

现在通过点击debug bar,的event项如下面所示:

我不明白的是为什么home.homepage_visit在Not Called Listeners里面,但是明明执行了的啊?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
曾经蜡笔没有小新

你的symfony 2的具体版本?

如果确实写了log,说明你的event相关代码是有效的。

profiler(debug bar)里显示的信息,是通过data collector收集来的,至于为什么没有记录到listener的调用,则需要知道更多细节才能了解,建议你详细检查xdebug token和profiler信息的对应关系。

另外,不要直接注入container给event,这样依赖过于宽泛了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号