我正在使用Doctrine 2.2.1和CodeIgniter 2.1.0獨特的驗證不工作,我怎麼..?
我試圖對錶單中的電子郵件地址字段進行唯一驗證 - 只是爲了確保該字段不存在於數據庫中。
我開始通過檢查這個好(但過時)教程here和CodeIgniter的文檔here
的CI文檔顯示的示例使用is_unique [table.field],也似乎是說,用回調可以做到這一點,但我似乎並沒有明白代碼是如何實現的,我自己也無法完成它。
我已經試過這樣:
$this->form_validation->set_rules('email', 'E-mail',
'required|valid_email|is_unique[users.email]');
這:
$this->form_validation->set_rules('email', 'E-mail', 'callback_email_check');
(這是從CodeIgniter的例子幾乎那兒剽竊逐字)
既不工作。第一個給我下面的輸出:
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進行獨立驗證的幫助?謝謝!
注意:在將'database'添加到autoload配置後,我能夠得到$this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|is_unique[users.email]');
,但是這完全違反了Doctrine。