2012-11-06 32 views
21

Tôi muốn quay trở lại một đoạn mã HTML cũng như các giá trị khác trong một chuỗi json, đây là những gì tôi có:Làm cách nào để trả lại mẫu được hiển thị bằng một phần của phản hồi JSON?

$html = $this->render('sometemplate.html.twig', array('somevar' => $somevar)); 
$response = new Response(json_encode(array("html" => $html, "name" => "Joe Bloggs"))); 
$response->headers->set('Content-Type', 'application/json'); 
return $response; 

Nhưng tất cả tôi nhận được là {"html":{"headers":{}}}. Có cách nào để chỉ cần lấy HTML rendered?

Trả lời

41

Sử dụng $this->renderView() để thay thế.

$this->render() trả về đối tượng Response, trong khi $this->renderView() trả về một chuỗi kết quả từ hiển thị mẫu.

+3

Chỉ cần thêm rằng các phương pháp này là một phần của Symfony. Thư viện lõi Twig sử dụng $ twig-> display để xuất nội dung, trong khi $ twig-> render trả về nội dung. Có thể là một chút bối rối! :-) – Webberig

+2

một cách khác có thể là sử dụng phương thức getContent() của đối tượng Response. – stef

Các vấn đề liên quan