Symfony2是一個非常優秀的架構,但它也僅僅隻是架構。架構的作用衆所周知是為了能夠快速開發出代碼組織良好的應用程式,而且基于架構開發者可以集中精力進行業務邏輯的開發,而不會将精力浪費在其它細節上面。雖然架構有着很多的好處,但它并不象CMS、Wordpress之類的PHP程式那樣是拿來就可以用的,它要實作某種功能是需要開發的。
第三方的Bundle其實部分解決了這個問題,當你需要基于Doctrine的使用者和角色時,你無須開發一個使用者和角色的Bundle,而隻需要安裝Symfony2Bundle網站中的UserBundle即可。同樣,你需要管理功能,隻需安裝AdminBundle。同樣還有MenuBundle、RestBundle等第三方的Bundle供你使用。那麼為什麼要使用第三方Bundle而不自行開發呢?原因一來是那句老話不要重複去發明輪子,二來則是與架構一樣的,将精力集中在業務邏輯上(這通常是獨一無二或無法重用的)。
那麼如何将第三方的Bundle安裝到Symfony2系統中呢?
首先,找到第三方Bundle,檢視它Resources/doc/目錄中的index.rst,看看它的Bundle名、下載下傳目錄和安裝目錄。以UserBundle為例,檢視其Resources/doc/index.rst檔案中的安裝語句;
然後,打開Symfony2目錄中的deps檔案(該檔案位于Symfony/根目錄下),将安裝語句添加在該檔案的末尾,如下所示:
[FOSUserBundle]
git=git://github.com/FriendsOfSymfony/UserBundle.git
target=/bundles/FOS/UserBundle
最後運作指令行指令(在Symfony2根目錄下):
$ php bin/vendors install
> Installing/Updating symfony
...
> Installing/Updating FOSUserBundle
Cloning into /var/www/Symfony/vendor//bundles/FOS/UserBundle...
remote: Counting objects: 7715, done.
remote: Compressing objects: 100% (2730/2730), done.
remote: Total 7715 (delta 4942), reused 7285 (delta 4570)
Receiving objects: 100% (7715/7715), 916.65 KiB | 105 KiB/s, done.
Resolving deltas: 100% (4942/4942), done.
HEAD is now at 86bf6fa Updated commands for Symfony changes. Breaks compatibility with beta5
這樣就已經下載下傳并安裝了UserBundle了。
如果你更新第三方的Bundle,你隻需要在指令行中輸入:
$ php bin/vendors update
> Installing/Updating FOSUserBundle
remote: Counting objects: 7720, done.
remote: Compressing objects: 100% (2733/2733), done.
remote: Total 7720 (delta 4945), reused 7288 (delta 4571)
Receiving objects: 100% (7720/7720), 917.08 KiB | 171 KiB/s, done.
Resolving deltas: 100% (4945/4945), done.
HEAD is now at affe193 Updated the doc to use the ini syntax for the deps file
從上例不難看出UserBundle進行了更新,對文檔中的deps檔案部分使用了ini文法。
安裝好了就要進行使用,在Symfony2中安裝Bundle和激活Bundle是兩個概念,要使用就必須得激活,激活其實已經在上一篇博文《Symfony2入門》中已經說得很清楚了,這裡權當複習一遍:
首先,確定FOS名稱空間可以被自動加載,在app/autoload.php檔案中添加以下語句:
$loader->registerNamespaces(array(
// ...
//添加自定義的名稱空間
'FOS' => __DIR__.'/../vendor/bundles',
// ...
));
其次,将該Bundle注冊到Symfony2中,請在你的app/AppKernel.php檔案中添加下列語句:
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new FOS\UserBundle\FOSUserBundle(),
);
// ...
return $bundles;
}
注意,由于該Bundle需要SecurityBundle,是以要確定SecurityBundle已經被注冊。
打完收功!!我們已經安裝并激活了一個第三方的Bundle。如果兄弟們有什麼疑問的話可以下面的評論中直接提。
本文轉自 firehare 51CTO部落格,原文連結:http://blog.51cto.com/firehare/593426,如需轉載請自行聯系原作者