私はDoctrine 2.2.1とCodeIgniter 2.1.0を使用しています独自の検証が機能しない、どうすればよいですか?
フォームから電子メールアドレスフィールドで一意の検証をしようとしています - フィールドがデータベースに存在しないことを確認するだけです。
私はこの良い(しかし、旧式)チュートリアルhereとCodeIgniterのドキュメントhere
CIのドキュメントは[table.field] is_uniqueを用いた例を示しており、また、コールバックを使用すると、これを行うことができると言うように見えるをチェックして始めたが、私はそのコードがどのようにしているのか把握していないようで、自分自身で機能させることはできません。
私はこの試みた:
$this->form_validation->set_rules('email', 'E-mail',
'required|valid_email|is_unique[users.email]');
これ:(CodeIgniterの例からほぼそのままcribbedれる)
$this->form_validation->set_rules('email', 'E-mail', 'callback_email_check');
どちら作業。最初は私に次のような出力が得られます。
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Signup_form::$db
Filename: libraries/Form_validation.php
Line Number: 954
Fatal error: Call to a member function limit() on a non-object in /../systemFolder/libraries/Form_validation.php on line 954
目は私にこの出力を与える:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '[email protected]' for key 'email_index'' in /../applicationFolder/libraries/Doctrine/DBAL/Statement.php:131 Stack trace: #0 /../applicationFolder/libraries/Doctrine/DBAL/Statement.php(131): PDOStatement->execute(NULL) #1 /../applicationFolder/libraries/Doctrine/ORM/Persisters/BasicEntityPersister.php(239): Doctrine\DBAL\Statement->execute() #2 /../applicationFolder/libraries/Doctrine/ORM/UnitOfWork.php(896): Doctrine\ORM\Persisters\BasicEntityPersister->executeInserts() #3 /../applicationFolder/libraries/Doctrine/ORM/UnitOfWork.php(304): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata in /../applicationFolder/libraries/Doctrine/DBAL/Statement.php on line 131
私はシンプルなものを望むだろうか? CI/Doctrineを使用してDBに対して独自の検証を正しく行う方法についての助けはありますか?ありがとう!
注:自動ロード設定に 'データベース'を追加した後に$this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|is_unique[users.email]');
を動作させることができましたが、Doctrineが完全に切断されます。