【问题标题】:Installation of a symfony2 bundle (DoctrineCouchDBBundle)安装 symfony2 包 (DoctrineCouchDBBundle)
【发布时间】:2011-10-05 05:42:53
【问题描述】:

我希望将包安装到我的 symfony 项目中。但是,我遇到了一些问题。如果答案是微不足道的,请接受我的无知,但我已经尝试寻找解决方案,但可惜我什么也没找到。

在我的 deps 文件中,我有:

[doctrine-couchdb]
  git=http://github.com/doctrine/couchdb-odm.git
[DoctrineCouchDBBundle]
  git=http://github.com/doctrine/DoctrineCouchDBBundle.git
  target=/bundles/Symfony/Bundle/DoctrineCouchDBBundle

我运行 bin/vendors install 命令

在我的 autoload.php 文件中,我有:

'Doctrine\\ODM\\CouchDB'=> __DIR__.'/../vendor/doctrine-couchdb/lib',

我已经注册了捆绑包:

new Doctrine\Bundle\CouchDBBundle\DoctrineCouchDBBundle()

当我运行 php app/console 时出现错误:

Fatal error: Class 'Doctrine\Bundle\CouchDBBundle\DoctrineCouchDBBundle' not found in /var/www/symfony2.test/app/AppKernel.php on line 22

我注意到对于 MongoDB ODM,您有:

[doctrine-mongodb]
    git=http://github.com/doctrine/mongodb.git

没有教义-couchdb 存储库吗?你用过这个捆绑包吗?

【问题讨论】:

    标签: php symfony doctrine doctrine-orm


    【解决方案1】:

    我把目标改为

    目标= /bundles/Doctrine/Bundle/CouchDBBundle

    所以现在看起来像这样

    [DoctrineCouchDBBundle] git=http://github.com/doctrine/DoctrineCouchDBBundle.git 目标=/bundles/Doctrine/Bundle/CouchDBBundle

    因为我注意到 couchdb 包的命名空间是

    命名空间 Doctrine\Bundle\CouchDBBundle;

    因此添加

    新的教义\捆绑\CouchDBBundle\DoctrineCouchDBBundle()

    如果安装位置与命名空间/类名不匹配,则到 AppKernel 将失败。

    详细设置和配置在这里DoctrineCouchDBBundle Git Hub Issue Log

    对于那些刚接触 Symfony 2 捆绑架构的人,您可能想知道哪些配置键是强制性的并且可用于捆绑。信息可以从:

    bundle_dir/bundle_name/.../configuration.php

    【讨论】:

      【解决方案2】:

      更新

      1.) 检查您是否还安装并自动加载了Doctrine\CouchDB

      2.) 在你的 git 安装中

      target=/bundles/Symfony/Bundle/DoctrineCouchDBBundle 应该是

      target=/bundles/Doctrine/Bundle/DoctrineCouchDBBundle(注意 Symfony => 学说)

      3.) 然后改变

      'Doctrine' => __DIR__.'/../vendor/doctrine/lib',

      'Doctrine' => array(__DIR__.'/../vendor/doctrine/lib', __DIR__.'/../vendor/bundles'),


      在我的脑海中,我会假设以下两种情况:

      1.) 缓存

      2.) 'Doctrine\\ODM\\CouchDB'=> __DIR__.'/../vendor/doctrine-couchdb/lib', 应该高于任何更高级别的命名空间('Doctrine'、'Doctrine\Common')

      所以它应该是这样的:

      'Doctrine\\ODM\\CouchDB'=> __DIR__.'/../vendor/doctrine-couchdb/lib',
      'Doctrine\\DBAL'   => __DIR__.'/../vendor/doctrine-dbal/lib',
      'Doctrine'         => __DIR__.'/../vendor/doctrine/lib',
      

      3.) config.yml 中缺少一些配置

      【讨论】:

      • 可能是一个愚蠢的问题,但你有其他部分的自动加载吗?像 Doctrine\Bundle 和 Doctrine\CouchDB ?
      • 也不应该target=/bundles/**Symfony**/Bundle/DoctrineCouchDBBundle实际上是target=/bundles/**Doctrine**/Bundle/DoctrineCouchDBBundle
      • 是的,我把它改成了:target=/bundles/**Doctrine**/Bundle/DoctrineCouchDBBundle
      • 但它并没有改变任何东西,我需要自动加载捆绑 ni 自动加载吗?我该怎么做?谢谢!
      • 呸太长,无法在 cmets 中解释,请查看我在答案中的更新
      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 2013-10-02
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2014-05-05
      • 1970-01-01
      相关资源
      最近更新 更多