php错误:在非对象上调用fromArray()的成员函数

时间:2012-01-12 15:24:28

标签: php zend-framework doctrine

我正在尝试设置一个“忘记密码”系统。用户输入电子邮件,如果存在,则会记录新电子邮件并将其发送到输入的用户电子邮件地址。用户电子邮件检查正常。当试图将新的密码输入系统时,它不会。

代码是这样的:

..... (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

有人可以帮我弄清楚我做错了什么吗?请。

2 个答案:

答案 0 :(得分:6)

简单地说,$user不是一个对象。它可能是falsenull,表示find()实际上找不到它想要的内容。

您可以看到$uservar_dump($user)实际存在的内容,然后您应该阅读find的文档,了解它为何会返回该文档。

答案 1 :(得分:0)

根据docsDoctrine_Table::find()(在错误上方的行上调用)返回以下实体之一:

  

Doctrine_Collection,array,Doctrine_Record,如果没有结果,则为false

这意味着您需要在尝试使用值$user之前检查返回的内容,就好像它是一个公开fromArray()方法的对象。