【发布时间】:2017-03-29 19:13:53
【问题描述】:
我调用了以下 ajax:
$('.checkbox').click(function () {
$.ajax({
type:'POST',
url: '/loadProducts',
data: {},
success: function(response) {
$('.js-products').html(response);
}});
return false;
});
现在,当我调用我的端点 loadProducts 时,我想获取产品、呈现产品模板并返回所有产品。
在我的端点我可以这样做:
/**
* @Route("/loadProducts", name="loadProducts")
*/
public function loadProducts() {
/* @var \AppBundle\Service\ProductService $productService */
$productService = $this->get('app.product');
$products = $productService->getProducts();
$productItems = [];
foreach ($products as $product) {
$productItems = $this->render('home/productItem.html.twig', [
'product' => $product
]);
}
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($productItems));
return $response;
}
但这只会呈现一种产品。如何返回渲染多个 product.html.twig 文件? (除了创建一个渲染所有的新模板)
【问题讨论】:
-
你的 php 怎么样了?
-
我指定了我的端点,基本上就是这样,但是渲染一个产品,我将如何渲染多个
-
这样想:一个请求就是一个响应。该响应可以包含 HTML(我认为这就是您想要的)。在 HTML 中,您可以呈现多个 (product-)。任何有自己的形象,价格和描述。在 Symfony 中,你也可以渲染一个响应。基本上,您使用 ONE twig 模板呈现 HTML,但在该模板中,您可以使用 for 循环来呈现多个相同的内容。在该循环中,您也可以包含其他模板。就是这样,但我想知道 symfony 中是否有一种方法可以一次渲染一堆模板,然后一次渲染响应 html不是直接的。我用一个例子来回答你