2011-09-28 56 views
8

我開始用Symfony2構建一個網站,並且我對資源有一點點困惑。在Symfony2中放置核心資源的位置?

Symfony2 Book說每個資源文件都必須位於一個Bundle中,但是我在每個頁面的base.html.twig文件中使用的最基本的圖像,.js和.css文件又如何?

我應該做一個CoreBundle或類似的東西,只是爲了這些文件,或者我應該把它們放在app \ Resources文件夾中(或直接在web文件夾中,也許)? 如果我可以使用這些app \ Resources文件夾,我該如何從模板中引用這些文件?

爲我們製作一個Bundle似乎有點不必要,而且我認爲這些文件的資源URL也很醜陋(例如'/bundles/projectcore/images/logo.jpg')。

這裏最好的做法是什麼?

回答

6

我已經將所有文件保存在/ web(即/ web/js)以及其他我將它們放在「資產」包中的其他文件中。

如果您正在開發將在衆多項目中重複使用的捆綁包,則將資產存儲在該捆綁包中是有意義的。我想你會使用命令行將這些資產發佈/安裝到Web文件夾中。例如,假設您有一個需要特定CSS的BlogBu​​ndle。你會將該CSS存儲在該包中,因此下次爲項目使用BlogBu​​ndle時,可以輕鬆地重新使用該CSS。

與Symfony2的許多其他事情一樣,您的個人偏好在這些決策中扮演着重要角色。我建議保持一致,儘管您存儲您的資產的位置。不得不管理三個不同地點的資產(網絡,AssetsBundle,其他包),這可能會讓人頭疼。所以選擇一個位置,並儘量保持一致。

至於從應用程序/資源中訪問資產...您可能可以使用這個資產。我不是很熟悉它,但我相信你可以從項目的任何地方加載資源。我實際上建議看一下核心資產代碼(請參閱vendor\Assetic),而不是Symfony2 Assetic助手,因爲您可以更好地瞭解可能的情況。

+0

我想我會讓AssetsBundle用於存儲這些資源,它仍然可維護,而不是把它們全部放在web文件夾中(尤其是,如果我想在其他項目中重用這些資產)。感謝你的回答! – banrobert

2

我們在Linux中使用的符號鏈接使/網絡/包/ projectcore /圖像點在NetBeans的src /包/資源/公/圖像

顛覆,它的工作。好的是,你的所有應用程序仍然保留在/ src/Bundle文件夾中

+3

爲了完整起見,可以在Symfony2項目目錄中運行'php app/console assets:install web --symlink'來實現。 – richsage

+0

我在Windows上,所以符號鏈接不是我的選擇:)無論如何,謝謝! – banrobert

+1

@banrobert符號鏈接也適用於Windows – Inoryy