2013-10-02 39 views
0

我是Symfony的新手,最後開始理解如何使用Doctrine來查詢數據庫。但是,至今爲止我不知道如何在Twig模板中使用數據庫對象內容。在模板中使用教義數據庫對象

可以說我的數據庫對象包含50種不同產品的產品標識,名稱,價格。我做的控制器查詢數據庫後,我就以下,對數據庫對象傳遞到嫩枝模板:

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模板,我想從控制器傳遞數據庫對象,然後在我的Twig模板中打印出數據庫數據。

我很欣賞任何有關如何完成此任務的建議。

非常感謝提前!

回答

3

我將用一個例子(對我來說更容易迴應解釋)

你想用一個slu search(你的例子中的VAR $字)搜索的東西。假設你想找到一篇文章。

所以你的控制器:

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 %} 
0

看看第二個例子中的Symfony2書(Sf2 Book - templating),你必須使用的功能「」解析您的對象

例在樹枝模板(如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)); 
} 
+0

感謝您的答覆。你能否詳細說明「它不是好的變種」? – AnchovyLegend

+0

當然!你說var「$ dataObject」包含查詢結果。所以你必須在你的TWIG模板中傳遞「$ dataObject」(方法$ this-> render('Template:test.html.twig,array('word'=> $ dataObject));而不是「$ word」 – Ben

+0

感謝您的回覆,但是我需要使用'$ word'來創建'$ dataObject'。我是否錯過了一些東西?難道我不會失去對使用這個實現的'''slug'的訪問嗎?另外,我仍然不完全確定爲什麼它是「不是**好**」? – AnchovyLegend