所以...我基本上遵循实用的 symfony 书,遇到了以下问题。我已经正确(我猜)安装了 sfGuardPlugin,构建了模型、sqls 等,创建了用户并尝试使用输入的用户名和密码登录。
我收到以下错误消息:
Fatal error: Call to undefined method sfGuardUserPeer::retrieveByUsername() in /***/plugins/sfGuardPlugin/lib/validator/sfGuardValidatorUser.class.php on line 53
这对我来说看起来很奇怪,因为 sfGuardValidatorUser 类的问题部分如下所示:
// user exists?
if ($user = sfGuardUserPeer::retrieveByUsername($username))
{
// password is ok?
if ($user->getIsActive() && $user->checkPassword($password))
{
return array_merge($values, array('user' => $user));
}
}
而 sfGuardUserPeer 只有空类:
class sfGuardUserPeer extends PluginsfGuardUserPeer
{
}
它扩展了 PluginsfGuardUserPeer,所以我也检查了它:
class PluginsfGuardUserPeer extends BasesfGuardUserPeer
{
public static function retrieveByUsername($username, $isActive = true)
{
$c = new Criteria();
$c->add(self::USERNAME, $username);
$c->add(self::IS_ACTIVE, $isActive);
return self::doSelectOne($c);
}
}
那是缺少的功能!
所以 - 怎么了?为什么它不起作用?我已经尝试过用谷歌找到的所有解决方案,但它们都不起作用:/