Symfony函数渲染参数动态

时间:2018-08-12 04:23:21

标签: php symfony twig render

大家好,我遇到您是因为我有一个小问题,我希望能够帮助您,我创建一个带有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.

谢谢您的帮助!

1 个答案:

答案 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参数提供给视图。

您需要考虑一下,如果不删除它,是否像会话中的用户一样提供了该变量的所有视图,如果您需要根据每个视图显示产品,则可以从视图中更改页脚内容使用专用的页脚块。