2016-06-20 45 views
0

我對Symfony很陌生,有一個非常基本的問題。關於如何在Symfony中編寫代碼的基本問題

所以我有我的Symfony項目與默認控制器和一些其他控制器。在我的基本模板中有一個body-block和一個category-block(這是我的站點導航)。

我現在怎麼會讓我的應用程序崩潰,以便類別樹只被共享和構建一次?

我的意思是,當我從默認控制器中的數據庫中獲取類別時,它們顯示在我的默認頁面上。但是我怎樣才能讓他們在其他頁面呢?

我是否必須在每種方法中的每個控制器中構建它們?那不可能是這樣,那麼我該怎麼做這個mvc呢?

+0

您遇到的大部分問題都已經處理完畢,這意味着通常可以使用一個或多個包來解決問題。 https://github.com/KnpLabs/KnpMenuBundle – JimL

+0

對於基本的結構和用法,我建議你只是通過文檔閱讀,它實際上是相當不錯的http://symfony.com/doc/current/index.html – JimL

+2

如果你做結束在應用程序中添加一些代碼,您可以將其添加到服務中,然後將該服務注入需要它的控制器中。即'$ categories = $ this-> categoryService-> getAll();' – JimL

回答

0

控制器嵌入對於這個問題是一個很好的解決方案。它可以這樣完成:

  1. 創建一個呈現類別樹的控制器。我們稱之爲categoryTreeAction。輸出應該只包含小部件的代碼,而不是整個頁面。
  2. 調用在樹枝模板此時,相應的地方呈現功能:

    {{渲染(控制器( '的appbundle:默認:categoryTree')}}

提示:你可以還使用控制器參數傳遞上下文變量(例如突出顯示活動類別)

查看文檔以獲取更多信息:
http://symfony.com/doc/current/book/templating.html#embedding-controllers