我正在尝试设置一个“忘记密码”系统。用户输入电子邮件,如果存在,则会记录新电子邮件并将其发送到输入的用户电子邮件地址。用户电子邮件检查正常。当试图将新的密码输入系统时,它不会。
代码是这样的:
..... (form is_valid and check email ok)
if(is_object($object)) {
$newpassword = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',8)),0,8);
$input = $form->getValues();
$user = Doctrine::getTable('Tcc_Model_User')
->find($input['email']);
$user->fromArray($input);
$user->Password = md5($newpassword);
$user->save();
......
email send
} else {
$form->getElement('email')->addError('Sorry, there is no record of that email adddress.');
}
我得到的错误是:
Call to a member function fromArray() on a non-object
有人可以帮我弄清楚我做错了什么吗?请。
答案 0 :(得分:6)
简单地说,$user
不是一个对象。它可能是false
或null
,表示find()
实际上找不到它想要的内容。
您可以看到$user
与var_dump($user)
实际存在的内容,然后您应该阅读find
的文档,了解它为何会返回该文档。
答案 1 :(得分:0)
根据docs,Doctrine_Table::find()
(在错误上方的行上调用)返回以下实体之一:
Doctrine_Collection,array,Doctrine_Record,如果没有结果,则为false
这意味着您需要在尝试使用值$user
之前检查返回的内容,就好像它是一个公开fromArray()
方法的对象。