ApiPlatform\Core\Bridge\FosUser\EventListener::onKernelView PHP Method

onKernelView() public method

Persists, updates or delete data return by the controller if applicable.
public onKernelView ( GetResponseForControllerResultEvent $event )
$event Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent
    public function onKernelView(GetResponseForControllerResultEvent $event)
    {
        $request = $event->getRequest();
        try {
            RequestAttributesExtractor::extractAttributes($request);
        } catch (RuntimeException $e) {
            return;
        }
        $user = $event->getControllerResult();
        if (!$user instanceof UserInterface || $request->isMethodSafe(false)) {
            return;
        }
        switch ($request->getMethod()) {
            case Request::METHOD_DELETE:
                $this->userManager->deleteUser($user);
                $event->setControllerResult(null);
                break;
            default:
                $this->userManager->updateUser($user);
                break;
        }
    }

Usage Example

Ejemplo n.º 1
0
 public function testSafeMethod()
 {
     $request = new Request([], [], ['_api_resource_class' => User::class, '_api_item_operation_name' => 'put']);
     $manager = $this->prophesize(UserManagerInterface::class);
     $manager->deleteUser()->shouldNotBeCalled();
     $manager->updateUser()->shouldNotBeCalled();
     $event = $this->prophesize(GetResponseForControllerResultEvent::class);
     $event->getRequest()->willReturn($request)->shouldBeCalled();
     $event->getControllerResult()->willReturn(new User());
     $listener = new EventListener($manager->reveal());
     $listener->onKernelView($event->reveal());
 }