ZendFramework,Doctrine 2 ODM与mongoDB - Hydrator Error

时间:2012-01-31 22:12:21

标签: zend-framework mongodb doctrine-odm

我正在将Zend Framework与Doctrine 2和mongoDB结合使用。 到目前为止一切都很好。

现在我正在重写我的自定义验证类,以检查数据库中是否已存在用户名。 (此代码适用于ORM和MySQL,但现在不适用于ODM和mongoDB)。

所以我的自定义验证类如下所示:

<?php

class Project_Validate_UsernameUnique extends Zend_Validate_Abstract {
const USERNAME_EXISTS = '';

protected $_messageTemplates = array (
    self::USERNAME_EXISTS => "'%value%' is taken. Please choose another username."
);

public function isValid($value) {
            // setting value for the form
            $this->_setValue($value);

            // get the document manager and repository              
            $front = Zend_Controller_Front::getInstance();
            $dm = $front->getParam('bootstrap')->getResource('odm');
            $userRepository = $dm->getRepository('Entities\User');

            $user = $userRepository->findOneBy(array('username' => $value));        

            // if an user was found, return false
            if ($user) {
                    $this->_error(self::USERNAME_EXISTS);
                    return false;
            }
            return true;
     }
}

但是我在这里得到了这个错误:

Warning:   file_put_contents(/Applications/XAMPP/xamppfiles/htdocs/project/application/models/Hydrators/EntitiesUserHydrator.php) [function.file-put-contents]: failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Hydrator/HydratorFactory.php on line 343

我也试过findBy并且没有数组注释(findByUsername或findOneByUsername),但是,我仍然得到这个错误或者某种程度上“没有”。 使用ORM和MySQL它完美无缺,那么问题出在哪里?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您的Hydrators文件夹是否可由PHP写入?