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

例を挙げてお答えします(説明しやすいように)

スラッグ (あなたの例では 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 ) の 2 番目の例を見てください。関数 "for" を使用してオブジェクトを解析する必要があります (php の配列のように!)

小枝テンプレートの例:

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

ああ、それはあなたのrenderメソッドの良い変数ではありません(しかし、それはあなたの例のためでした!)

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 に答える