Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController PHP Method

onKernelController() public method

Guesses the template name to render and its variables and adds them to the request object.
public onKernelController ( FilterControllerEvent $event )
$event Symfony\Component\HttpKernel\Event\FilterControllerEvent A FilterControllerEvent instance
    public function onKernelController(FilterControllerEvent $event)
    {
        if (!is_array($controller = $event->getController())) {
            return;
        }

        $request = $event->getRequest();

        if (!$configuration = $request->attributes->get('_template')) {
            return;
        }

        if (!$configuration->getTemplate()) {
            $configuration->setTemplate($this->guessTemplateName($controller, $request));
        }

        $request->attributes->set('_template', $configuration->getTemplate());
        $request->attributes->set('_template_vars', $configuration->getVars());

        // all controller method arguments
        if (!$configuration->getVars()) {
            $r = new \ReflectionObject($controller[0]);

            $vars = array();
            foreach ($r->getMethod($controller[1])->getParameters() as $param) {
                $vars[] = $param->getName();
            }

            $request->attributes->set('_template_default_vars', $vars);
        }
    }

Usage Example

 /**
  * Guesses the template name to render and its variables and adds them to
  * the request object.
  *
  * @param FilterControllerEvent $event
  */
 public function onKernelController(FilterControllerEvent $event)
 {
     $request = $event->getRequest();
     if ($configuration = $request->attributes->get('_view')) {
         $request->attributes->set('_template', $configuration);
     }
     parent::onKernelController($event);
 }
All Usage Examples Of Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController