Я предлагаю вам изменить ответ на глобальном уровне с помощью события 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>
Более подробная информация в этой статье:
Надеется, что это поможет
вы можете сделать суб-запрос на другой контроллер, получить ответ и включить его, где вы хотите. https://symfony.com/doc/current/templating/embedding_controllers.html – Federkun