symfony sfGuardPlugin Ошибка вызова функции-члена getId () для необъекта в плагинах / sfGuardPlugin / lib / user / sfGuardSecurityUser.class.php - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь установить sfGuard Plugin с Symfony 1.4 (Propel). У меня были некоторые возможности установить его, и он работал нормально (я смог зарегистрироваться, войти и выйти).

Но как только я снова очистил свой кэш, я не могу войти в систему и получаю эту ошибку:

Неустранимая ошибка PHP: вызов функции-члена getId () для необъекта в plugins / sfGuardPlugin / lib / user / sfGuardSecurityUser.class.php на линии 81, рефери: http://localhost/index.php/login

Я не уверен, что я сделал неправильно, но почему-то я не могу заставить его работать снова. Я попытался удалить и переустановить плагин. но та же ошибка.

Я изменил свой app.yml , settings.yml , routing.yml , согласно документации. Я также изменил apps/myapp/lib/myUser.class.php для расширения от sfGuardSecurityUser .

Форма отправки входит в файл plugins/sfGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php и завершается ошибкой после form->isValid при вызове функции $this->getUser()->signIn($values['user'],...).

Я подтвердил, что $values['user'] имеет правильное значение из формы. Функция входа в свою очередь вызывает: $this->setAttribute('user_id', $user->getId(), 'sfGuardSecurityUser'); и там, где он не может получить $user как объект, он по-прежнему "имя пользователя", которое я передал в виде.

Любая помощь приветствуется. Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

после некоторой отладки и запуска с нуля, похоже, что я облажался с перезаписью sfGuardFormSignin.class.php по умолчанию, что сделало класс $ user недопустимым, и поэтому все вызовы функций на нем заканчивались неудачей.

0 голосов
/ 17 февраля 2012

Я проверил, что $ values ​​['user'] имеет правильное значение из формы.

Что именно вы думаете, правильное значение должно быть? Похоже, вы создали свою собственную форму и ожидаете, что поле user будет именем пользователя, тогда как на самом деле ожидается, что user будет массивом, подобным:

$user = Array (
   'username' => 'Username value from form',
   'password' => 'password value from form'
}

По сути, ваша форма должна выглядеть примерно так:

<form>
  <input type="text" id="user" name="user[username]" />
  <input type="password" id="password" name="user[password]" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...