Пространственный ответ на основе среды Symfony2 - PullRequest
0 голосов
/ 10 января 2012

Я ищу способ включить / отключить оболочку {% spaceless %}{% endspaceless %} для всего объекта Response на основе текущей среды Symfony.Я думаю, что должен прослушать событие kernel.view и изменить ответ там, но я не могу его сделать.

Причина этого в том, что лучше отлаживать все эти пробелы, но сохранить их минимальными для производственного использования.

Кто-нибудь делал это?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

spaceless - это тег Twig, ответ никогда не узнает об этом.

Вы не можете легко отключить его, поскольку он является частью Twig_Extension_Core, и нет возможности отключить его.

Тебе нужно найти другой путь. Может быть, прямо из вашего шаблона (используя его или нет, в зависимости от среды).

0 голосов
/ 15 июля 2015

Реализация 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...