0

我是 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 模板中打印出数据库数据。

我很感激任何关于我如何做到这一点的建议。

提前谢谢了!

4

2 回答 2

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:Default:search.html.twig'

{% for item in result %}
{{ item.title }} : {{ item.content }}
{% endfor %}
于 2013-10-02T15:49:56.180 回答
0

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

树枝模板中的示例:

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

啊,这不是您的渲染方法中的好 var (但它是针对您的示例的!)

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));
}
于 2013-10-02T15:05:17.927 回答