如何在symfony2.X控制器中设置标头并渲染没有renderView()方法的树枝模板

sjt*_*003 6 http-headers symfony

如何在symfony2.X控制器中设置标题(内容类型)和渲染没有renderView()方法的树枝模板?

Jus*_*ier 10

我不确定接受的答案是否有效,或者如果有的话.无论如何,这里有几种方法.我在这里有一个XML和JSON示例.

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;

class DefaultController extends Controller{
  public function indexAction($x = 0)
  {
    $response = new Response(
      $this->renderView('AcmeMyBundle:Default:index.html.twig', array('x'=>$x)),
      200
    );
    $response->headers->set('Content-Type', 'text/xml');

    return $response;
  }

  //...
Run Code Online (Sandbox Code Playgroud)

或者用于JSON响应

//...

public function indexAction( $x = 0 )
{
  $response = new JsonResponse(
    array('x'=>$x)
  );

  return $response;
}
Run Code Online (Sandbox Code Playgroud)


Jav*_*vad 2

您可以将响应返回为渲染视图(检查此示例)

public function indexAction()
{
   // a parameter which needs to be set in twig
   $variable = 'This is sample assignment';
   $current_user = $this->user; // assume you defined a private variable in your class which contains the current user object

   $response = new Response(
      'AcmeMyBundle:Default:myTemplate.html.twig',
      ['parameter1' => $variable],
      ['user' => $current_user]
   );

   return $response;
}
Run Code Online (Sandbox Code Playgroud)

如果您的响应有特定的标头信息,您可以通过以下方式轻松设置$response->header->set(...);