Ошибка php: вызов функции-члена fromArray () для необъекта - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь настроить систему "забыл пароль". Пользователь вводит электронное письмо, и, если оно существует, новое электронное письмо записывается и отправляется на указанный электронный адрес пользователя. Проверка электронной почты пользователя работает нормально. При попытке ввести новый пароль в систему это не так.

Код такой:

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

6 голосов
/ 12 января 2012

Проще говоря, $user не является объектом. Вероятно, это либо false, либо null, что означает, что find() на самом деле не нашел то, что искал.

Вы можете увидеть, что на самом деле $user есть с var_dump($user), а затем вам следует прочитать документацию для find, чтобы понять, почему она возвращает это.

0 голосов
/ 12 января 2012

Согласно документам , Doctrine_Table::find() (вызывается в строке над вашей ошибкой) возвращает одну из следующих сущностей:

Doctrine_Collection, массив, Doctrine_Record или false, если нет результата

Это означает, что вам нужно проверить, что было возвращено, прежде чем пытаться использовать значение $user, как если бы это был объект, представляющий метод fromArray().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...