2016-11-23 78 views
1

是否有可能在Symfony2有一個單獨的控制器只有頭部例如?Symfony額外的控制器的標題

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

否則我需要在每個頁面的每個控制器中添加標題值。

+1

,你想你可以做一個子請求到另一個控制器,得到響應,幷包含它。 https://symfony.com/doc/current/templating/embedding_controllers.html – Federkun

回答

0

我建議你編輯響應全球使用內核響應事件,如例如,定義一個監聽器:

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目錄/阿克米/ 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> 

更多信息:

希望這有助於