Con*_*nce 3 symfony symfony-2.1
我有一个事件监听器,方法看起来像这样
public function onKernelResponse(FilterResponseEvent $event,EntityManager $entityManager)
{
$controller = $event->getController();
if (!is_array($controller)) {
return;
}
if ($controller[0] instanceof UserController) {
//@TODO limit this for Controller action editUser() only
$response = $event->getResponse()->getContent();
$responseDecoded = json_decode($response);
if ($responseDecoded instanceof UserProperties) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的services.yml看起来像这样
update_user_controller_listener_marking_tasks:
class: Company\UserResultBundle\EventListener\UserEditListener
arguments: [@doctrine.orm.entity_manager]
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
Run Code Online (Sandbox Code Playgroud)
问题是监听器为在该用户控制器中执行的每个动作运行,这是我不想要的.
我的问题是我如何限制只在特定行动的响应中运行.我们说吧editUser()?
我无法找到明确显示文档的内容
您可以检查$controller[1]值 - 它包含控制器的操作方法名称:
if ($controller[0] instanceof UserController) {
// limit this for Controller action editUser() only
if ($controller[1] === 'editUserAction') {
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |