我尝试将mongoDB与Zend Framework和Doctrine集成。 迄今为止整合效果很好。 我唯一的问题是,我的实体没有找到(对应于我得到的错误消息)。ZendFramework&Doctrine 2&MongoDb - 实体未找到
的错误是:
Warning: class_parents() [function.class-parents]: Class User does not exist and could not be loaded in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Mapping/ClassMetadataFactory.php on line 336
Warning: array_reverse() expects parameter 1 to be array, boolean given in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Mapping/ClassMetadataFactory.php on line 336
Warning: Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Mapping/ClassMetadataFactory.php on line 336
Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Mapping/ClassMetadataFactory.php, line 336' in /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Controller/Response/Abstract.php:323 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Controller/Response/Abstract.php(341): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Controller/Response/Abstract.php(768): Zend_Controller_Response_Abstract->sendHeaders() #2 /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Controller/Front.php(992): Zend_Controller_Response_Abstract->sendResponse() #3 /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch() #4 /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Application.php(366): Zend_Applic in /Applications/XAMPP/xamppfiles/htdocs/project/library/Zend/Controller/Response/Abstract.php on line 323
我的application.ini:
[production]
; PHP settings
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
; Set Plugin path for Lupi mongoodm resource
pluginPaths.Lupi_Resource = APPLICATION_PATH "/../Library/Lupi/Resource"
; Library include paths & namespaces
includePaths.library = APPLICATION_PATH "/../library"
autoloaderNamespaces[] = "Lupi\"
autoloaderNamespaces[] = "Doctrine\"
autoloaderNamespaces[] = "Symfony\"
; Bootstrap options
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
; Applicaiton Setup
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
; ODM settings
resources.odm.documents.dir = APPLICATION_PATH "/models/Entities"
resources.odm.documents.namespace = "Application"
resources.odm.config.proxyDir = APPLICATION_PATH "/models/Proxies"
resources.odm.config.proxyNamespace = "proxies"
resources.odm.config.hydratorDir = APPLICATION_PATH "/models/Hydrators"
resources.odm.config.hydratorNamespace = "hydrators"
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
我bootstrap.php中是空的。 此外,我有github上的示例操作控制器和资源。
我user.php的:
<?php
namespace Entities;
/**
* @Document(collection="users")
*/
class User {
/**
* @Id
*/
private $id;
/**
* @String
*/
private $username;
/**
* @String
*/
private $email;
我的控制器:
<?php
class RegistrationController extends Lupi\Controller\Action {
/**
* @var \Doctrine\ODM\MongoDB\DocumentRepository
*/
protected $repository;
public function init() {
$this->repository = $this->dm->getRepository('User');
}
我的例子,在此基础上在这里:http://github.com/bittarman/zf-d2-odm,演示文稿,这可以在这里找到http://www.zend.com/en/webinar/Framework/70170000000bZ6y-Doctrine2-ODM-ZF-20110526.flv,而且在SlideShare上与相应的标签。
在此先感谢您的帮助! =)
首先感谢您的回复!你提到的东西对我来说似乎是正确和合理的,我根据你的描述对它们进行了改变,但是没有改变:(之后,我将1:1从你的项目拷贝到我的项目中(也包括它的类的实体文件夹),而且我有这个错误我真的不明白:( – pvlsgnnks