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
また、配列注釈(findByUsernameまたはfindOneByUsername)なしでfindByを試しましたが、それでも、このエラーが発生するか、何らかの形で「何も」発生しません。ORM と MySQL では完璧に機能しましたが、どこに問題があるのでしょうか?
前もって感謝します!