eZ\Bundle\EzPublishCoreBundle\EventListener\ViewControllerListener::getController PHP Method

getController() public method

Configures the View for eZ View controllers.
public getController ( FilterControllerEvent $event )
$event Symfony\Component\HttpKernel\Event\FilterControllerEvent
    public function getController(FilterControllerEvent $event)
    {
        $request = $event->getRequest();
        if (($viewBuilder = $this->viewBuilderRegistry->getFromRegistry($request->attributes->get('_controller'))) === null) {
            return;
        }
        $parameterEvent = new FilterViewBuilderParametersEvent(clone $request);
        $this->eventDispatcher->dispatch(ViewEvents::FILTER_BUILDER_PARAMETERS, $parameterEvent);
        $view = $viewBuilder->buildView($parameterEvent->getParameters()->all());
        $request->attributes->set('view', $view);
        // View parameters are added as request attributes so that they are available as controller action parameters
        $request->attributes->add($view->getParameters());
        if (($controllerReference = $view->getControllerReference()) instanceof ControllerReference) {
            $request->attributes->set('_controller', $controllerReference->controller);
            $event->setController($this->controllerResolver->getController($request));
        }
    }

Usage Example

 public function testGetControllerMatchedView()
 {
     $id = 123;
     $viewType = 'full';
     $templateIdentifier = 'FooBundle:full:template.twig.html';
     $customController = 'FooBundle::bar';
     $this->request->attributes->add(array('_controller' => 'ez_content:viewLocation', 'locationId' => $id, 'viewType' => $viewType));
     $this->viewBuilderRegistry->expects($this->once())->method('getFromRegistry')->will($this->returnValue($this->viewBuilderMock));
     $viewObject = new ContentView($templateIdentifier);
     $viewObject->setControllerReference(new ControllerReference($customController));
     $this->viewBuilderMock->expects($this->once())->method('buildView')->will($this->returnValue($viewObject));
     $this->event->expects($this->once())->method('setController');
     $this->controllerResolver->expects($this->once())->method('getController')->will($this->returnValue(function () {
     }));
     $this->controllerListener->getController($this->event);
     $this->assertEquals($customController, $this->request->attributes->get('_controller'));
     $expectedView = new ContentView();
     $expectedView->setTemplateIdentifier($templateIdentifier);
     $expectedView->setControllerReference(new ControllerReference($customController));
     $this->assertEquals($expectedView, $this->request->attributes->get('view'));
 }
All Usage Examples Of eZ\Bundle\EzPublishCoreBundle\EventListener\ViewControllerListener::getController