Можно ли сделать так, чтобы только один маршрут был доступен только в формате html?
В конфигурации я указал html и json, но только для одного маршрута я бы хотел, чтобы json не использовался.
Ты можешь сделать?
Можно ли сделать так, чтобы только один маршрут был доступен только в формате html?
В конфигурации я указал html и json, но только для одного маршрута я бы хотел, чтобы json не использовался.
Ты можешь сделать?
Я не пробовал это, так как я на мобильном телефоне, но вы пробовали что-то подобное только для этого одного маршрута:
my-awesome-route:
pattern: /hello/{fist_name}/{last_name}.{_format}
defaults: { _controller: AcmeHelloBundle:Default:index, _format:html}
requirements:
_format: html
Вы можете вызвать setFormat('html')
в представлении в действии вашего контроллера.
Например, чтобы только отображать и возвращать шаблон:
class AcmeController extends FOSRestController
{
public function getAction()
{
// ...
$templateData = [
'some' => $vars,
];
$view = $this->view(null, 200)
->setFormat('html')
->setTemplate("AcmeBundle:Tpl:some.html.twig")
->setTemplateData($templateData);
return $this->handleView($view);
}
}
Но тогда обработчик представления всегда будет пытаться отобразить шаблон. Если вам не нужно рендерить, потому что у вас уже есть html, просто верните новый ответ symfony с правильными заголовками:
class AcmeController extends FOSRestController
{
public function getAction()
{
// you already have $html
$headers = ['Content-Type' => 'text/html; charset=UTF-8'];
return \Symfony\Component\HttpFoundation\Response::create($html, 200, $headers);
}
}