2016-11-23 4 views
1

Возможно ли в Symfony2 иметь отдельный контроллер только для заголовка?Контроллер Symfony для заголовка

$this->render('MYBundle::page.html.twig', array('header' => $header)); 

Else Мне нужно добавить значение заголовка в каждый контроллер для каждой страницы.

+1

вы можете сделать суб-запрос на другой контроллер, получить ответ и включить его, где вы хотите. https://symfony.com/doc/current/templating/embedding_controllers.html – Federkun

ответ

0

Я предлагаю вам изменить ответ на глобальном уровне с помощью события Kernel Response, в качестве примера, определим слушателя как:

namespace Acme\DemoBundle\EventListener; 

use Symfony\Component\HttpKernel\Event\FilterResponseEvent; 

class ResponseListener 
{ 
    public function onKernelResponse(FilterResponseEvent $event) 
    { 
     $request = $event->getRequest(); 

     // only do something when the requested format is "json" 
     if ($request->getRequestFormat() != 'json') { 
      return; 
     } 

     // only do something when the client accepts "text/html" as response format 
     if (false === strpos($request->headers->get('Accept'), 'text/html')) { 
      return; 
     } 

     // set the "Content-Type" header of the response 
     $event->getResponse()->headers->set('Content-Type', 'text/plain'); 
    } 
} 

и зарегистрировать следующим образом:

/SRC/Acme/DemoBundle/Ресурсы /services.xml

<?xml version="1.0" ?> 
<container xmlns="http://symfony.com/schema/dic/services" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 
    <services> 
     <service id="acme.filter_response_listener" class="Acme\DemoBundle\EventListener\ResponseListener"> 
      <tag name="kernel.event_listener" event="kernel.response" method="onKernelResponse" /> 
     </service>   
    </services> 
</container> 

Более подробная информация в этой статье:

Надеется, что это поможет

Смежные вопросы