我应该为我的Twig模板使用与控制器中相同的变量名吗?

时间:2013-02-08 11:30:45

标签: php symfony twig

我正在阅读Symfony2入门指南,我的问题是:

我有一个包含列的数据库:price,description,id,name 然后在我的控制器中,我获取这些列并通过树枝模板显示它们。 在我的控制器中我做:

public function showAction($id)
    {
        $product = $this->getDoctrine()
            ->getRepository('AcmeStoreBundle:Product')
            ->find($id);

        if (!$product) {
            throw $this->createNotFoundException(
                'No product found for id '.$id
            );
        }

        $price = $product -> getPrice();
        $description = $product -> getDescription();
        return $this->render(
        'AcmeStoreBundle:Store:index.html.twig',
        array('id' => $id, 'price' => $price, 'description' => $description)
        );
    }

我的问题是,我可以更改$ price,$ description来调用它吗......?或者我被迫继续提及这些变量,就像它们在数据库中被命名一样?

基本上,我可以这样做:

$foo = $product -> getPrice();
$bar = $product -> getDescription();

然后在我的渲染函数中执行:

   return $this->render(
        'AcmeStoreBundle:Store:index.html.twig',
        array('uniquecode' => $id, 'cost' => $foo, 'message' => $bar)
        );

我的问题有两个方面:1)我能做到吗2)这样做是不错的做法?

1 个答案:

答案 0 :(得分:4)

更好:

return $this->render('AcmeStoreBundle:Store:index.html.twig', array(
       'product' => $product
 ));

您可以像这样访问twig中的产品属性

{{ product.description }}

  

为变量使用有意义的名称。变量名必须定义   其内容的确切解释

我在http://codebuild.blogspot.de/2012/02/15-best-practices-of-variable-method.html找到了它,但你可以谷歌搜索变量和方法命名