2012-01-10 3 views
0

私が探しているのは、現在のSymfony環境に基づいてResponseオブジェクト全体の{% spaceless %}{% endspaceless %}ラッパーを有効/無効にする方法です。私はkernel.viewイベントに耳を傾けてそこのレスポンスを修正すべきだと思うが、私はそれを作ることができない。Symfony2環境に基づく無限レスポンス

これは、これらのスペースをすべて使用してデバッグした方が、本番用として使用するために縮小したままにしておく方がよいためです。

誰でもこれを行っていますか?

答えて

3

spacelessはTwigタグであり、レスポンスはそれについて決して知らない。

Twig_Extension_Coreの一部であるため、簡単に無効にすることはできません。無効にするオプションはありません。

別の方法を見つける必要があります。 おそらくあなたのテンプレートから直接(それを使用するかどうかは環境に依存しません)。

0

あなたのバンドルにResponseListenerを実装します。

class ResponseListener 
{ 
    private $container; 

    public function __construct($container) 
    { 
     $this->container = $container; 
    } 

    public function onKernelResponse(FilterResponseEvent $event) 
    { 
     // Compress HTML on prod environment only 
     if($this->container->get('kernel')->getEnvironment() == 'prod') 
      $event->getResponse()->setContent(trim(preg_replace('/>\s+</', '><', $event->getResponse()->getContent()))); 
    } 
} 

を次にservices.ymlに宣言:

services: 
    kernel.listener.response_listener: 
     class: AppBundle\Listener\ResponseListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse } 
     arguments: [@service_container] 
関連する問題