在模板中使用doctrine数据库对象

时间:2013-10-02 14:07:22

标签: symfony frameworks doctrine-orm doctrine twig

我是Symfony的新手,我终于开始了解如何使用Doctrine查询数据库。但是,我很遗憾了解如何在Twig模板中使用数据库对象内容。

让我们说我的数据库对象包含50种不同产品的产品ID,名称,价格。在我完成查询控制器中的数据库之后,我执行以下操作,将数据库对象传递到Twig模板中:

public function searchAction($word)
{
      //query database using the $word slug and prepare database object accordingly

      $dataObject; // contains query results
      return $this->render('GreatBundle:Default:search.html.twig', array('word' => $word));
}

这是我被困的地方。现在我有一个Twig模板,我想从控制器传递DB对象,然后在我的Twig模板中打印出数据库数据。

我很欣赏有关如何实现这一目标的任何建议。

非常感谢提前!

2 个答案:

答案 0 :(得分:3)

我会回答一个例子(我更容易解释)

你想用slug搜索一些东西(例子中的var $ word)。假设您想找到一篇文章。

所以你的控制器:

public function searchAction($word)
{
   //query database using the $word slug and prepare database object accordingly
   // Search the list of articles with the slug "$word" in your model
   $articleRepository = $this->getDoctrine()->getRepositoy('GreatBundle:Article');
   $dataObject = $articleRepository->findBySlug($word);
   // So the result is in $dataObject and to print the result in your twig, your pass the var in your template
   return $this->render('GreatBundle:Default:search.html.twig', array('result' => $dataObject));
}

树枝模板'GreatBundle:默认:search.html.twig'

{% for item in result %}
{{ item.title }} : {{ item.content }}
{% endfor %}

答案 1 :(得分:0)

看看Symfony2 Book(Sf2 Book - templating)中的第二个例子,你必须使用“for”函数来解析你的对象(就像php中的数组一样!)

twig模板中的示例:

{% for item in word %}
   {{ item.id }} - {{ item.name }} - {{ item.description }}{# etc... #}<br>
{% else %}
<h2>Aoutch ! No data !</h2>
{% endfor %}

啊,这不是你的渲染方法中的好变量(但这是你的例子!)

public function searchAction($word)
{
  //query database using the $word slug and prepare database object accordingly

  $dataObject; // contains query results
  return $this->render('GreatBundle:Default:search.html.twig', array('word' => $dataObject));
}