2012-01-10 38 views
0

我嘗試安裝FixturesBundle,如http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle/index.html中所述,但我的代理不會讓我出去。如何從Zip文件安裝Symfony 2.0 Bundle

所以我去了https://github.com/doctrine/data-fixtures並從最新的提交下載一個zip。

我解壓縮到供應商目錄並將其重命名爲學說固定。我按照教程中的描述編輯了autoload.php和AppKernel.php文件。

當我運行:

php app\console doctrine:fixtures:load 

我得到以下信息:

PHP Fatal error: Class 'Symfony\Bundle\DoctrineFixturesBundle\DoctrineFixturesB 
undle' not found in C:\NetbeansProjects\route_rest_service\app\AppKernel.php on 
line 20 

Fatal error: Class 'Symfony\Bundle\DoctrineFixturesBundle\DoctrineFixturesBundle 
' not found in C:\NetbeansProjects\route_rest_service\app\AppKernel.php on line 
20 

是否有一種方式來運行包將其指向一個zip文件的安裝?

I'm在Windows 7

回答

2

運行Symfony的2.0.9好像學說包已被移動的Symfony範圍回到主義之外。

請使用https://github.com/doctrine/DoctrineFixturesBundle

+0

謝謝菲利克斯。在閱讀https://github.com/doctrine/DoctrineFixturesBundle/blob/master/Resources/doc/index.rst後,我意識到我沒有下載DoctrineFixturesBundle。我將它作爲zip下載並解壓縮到vendor \ bundles \ Doctrine \ Bundle \ DoctrineFixturesBundle中。它仍然無法找到'Doctrine \ Bundle \ DoctrineFixturesBundle \ DoctrineFixtures Bundle' – 2012-01-11 20:27:35

2

是的,這是真的,這種理論被移動從Symfony的命名空間遠(見here)。因此,如果您使用的是從網站下載的Symfony標準發行版(不使用git),並且您希望手動安裝FixturesBundle,則必須從here下載doctrine-fixtures庫,解壓縮zip到

YourProject/vendor/doctrine-fixtures 

下載FixturesBundlehere,並提取其在

YourProject/vendor/bundles/Doctrine/Bundle/FixturesBundle 

然後,你必須註冊庫的命名空間,通過加做ing

'Doctrine\\\\Common\\\\DataFixtures' => \__DIR\__.'/../vendor/doctrine-fixtures/lib', 

在您的autoload.php

此外,你必須註冊主義的命名空間,因爲你的應用程序的某些部分將使用來自Symfony的命名空間中附帶的DoctrineBundle,但新的下載FixturesBundle將使用新學說的命名空間,所以使它的工作,在你的autoload.php添加以下行(照顧你學說命名空間之前做,請記住,更具體的規則去第一!)

'Doctrine\\\\Bundle' => \__DIR\__.'/../vendor/bundles', 

所以你現在要做的就是註冊在您的AppKernel.php中寫入新包

new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(), 
2

我有同樣的問題,這是我如何成功地解決它。我開始下載這個文件data-fixturesDoctrineFixturesBundle,解壓俱進/vendor/doctrine和創建該文件夾結構:

vendor 
    - doctrine 
    - doctrine-fixtures-bundle 
     - Doctrine 
     - Bundle 
     - FixturesBundle 
      DoctrineFixturesBundle.php 
      ..other files... 


vendor 
    - doctrine 
    - data-fixtures 
     - lib 
     - test 
     composer.json 
     ..other files... 

然後我編輯了AppKernel.php並添加

public function registerBundles(){ 
    ..... 
    new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(), 
    ..... 
} 

編輯位於的根composer.json項目,並增加了2條線:

"Doctrine\\Bundle\\FixturesBundle": "vendor/doctrine/doctrine-fixtures-bundle", 
"Doctrine\\Common\\DataFixtures": "vendor/doctrine/data-fixtures/lib" 

礦,現在看起來像這樣:

{ 
    "autoload": { 
     "psr-0": { 
      "": "src/", 
      "Doctrine\\Bundle\\FixturesBundle": "vendor/doctrine/doctrine-fixtures-bundle", 
      "Doctrine\\Common\\DataFixtures": "vendor/doctrine/data-fixtures/lib" 
     } 
    } 
} 

然後執行composer dump-autoload -o重新創建類圖。這一切都歸功於用戶Wouter Jnifr這回答我的問題How to install DoctrineFixturesBundle offline

編碼愉快!