大家好,我遇到您是因为我有一个小问题,我希望能够帮助您,我创建一个带有symfony的商店,但是我对“ render()”函数有一个小问题例如,当我通过输入3或4来在控制器种类中创建交叉ID时,它可以工作,但是当我动态放置他时,它不起作用
我分享我的代码 我的控制器
/**
* @Route("/produits-views/{id}", name="product-views", methods="GET")
* @param int $id
* @return Response
*/
public function viewsProduct(int $id): Response {
$product = $this->getDoctrine()->getRepository(Product::class)->find($id);
return $this->render('inc/views-product.html.twig', [
'productViews' => $product
]);
}
和我的函数渲染
{{ render(controller('App\\Controller\\FrontController::viewsProduct',
{id: productViews.id}
)) }}
我在footer.html.twig上包含了此内容,而footer在base.html.twig中包含了
他给我发了一条这样的消息
Variable "productViews" does not exist.
谢谢您的帮助!
答案 0 :(得分:0)
更改操作,让Symfony负责获取过程:
/**
* @Route("/produits-views/{id}", name="product-views", methods="GET")
* @param Product $product
* @return Response
*/
public function viewsProductAction(Product $product): Response {
return $this->render('inc/views-product.html.twig', [
'productViews' => $product
]);
}
在base.twig中使用productViews.id调用render时,要求在扩展该模板的每个视图中都需要具有productViews变量,这意味着该变量已通过render参数提供给视图。
您需要考虑一下,如果不删除它,是否像会话中的用户一样提供了该变量的所有视图,如果您需要根据每个视图显示产品,则可以从视图中更改页脚内容使用专用的页脚块。