如何从Zip文件安装Symfony 2.0 Bundle

时间:2012-01-10 14:53:32

标签: symfony bundle

我按照http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle/index.html中的描述尝试安装FixturesBundle,但我的代理人不会让我出去。

所以我去了https://github.com/doctrine/data-fixtures并从最新的提交中下载了一个zip。

我解压缩到供应商目录并将其重命名为 doctrine-fixures 。我按照教程中的描述编辑了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

有没有办法运行bundle指向zip文件的安装?

我在Windows 7上运行Symfony 2.0.9。

3 个答案:

答案 0 :(得分:2)

似乎教条束已经移出Symfony范围,回到了Doctrine。

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

答案 1 :(得分:2)

是的,Doctrine正在远离Symfony命名空间(参见here)。

因此,如果您正在使用从网站下载的Symfony标准发行版(不使用git),并且您希望手动安装FixturesBundle,则必须从{{下载doctrine-fixtures库3}},将zip解压缩到

YourProject/vendor/doctrine-fixtures

here下载FixturesBundle,然后在

中解压缩
YourProject/vendor/bundles/Doctrine/Bundle/FixturesBundle

然后你必须注册库的命名空间,通过添加

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

autoload.php

此外,您必须注册Doctrine的命名空间,因为您的应用程序的某些部分将使用Symfony命名空间中提供的DoctrineBundle,但新下载的FixturesBundle将使用新的Doctrine的命名空间,为了使它工作,在你的autoload.php中添加以下行(注意你在 Doctrine命名空间之前执行它,请记住更具体的规则首先!)

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

所以你现在要做的就是在AppKernel.php写作

中注册新的包
new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),

答案 2 :(得分: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并添加了这两行:

"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

快乐的编码!