0

だから...私は基本的に実用的な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);
  }

}

それは欠けている機能です!

だから-何が問題なのですか?なぜそれが機能しないのですか?私はすでにグーグルで見つけたすべての解決策を試しましたが、どれもうまくいきません:/

4

2 に答える 2

1

ついに見つけた!

the

symfony propel:build-model

タスクは、プラグインディレクトリにあるスキーマファイルからモデルディレクトリにsfGuardクラスを不必要に生成しましたが、すべてのクラスはすでにsfGuardフォルダに存在していました。

ねえ、それはそのようなよく開発されたフレームワークとプラグインでは起こらないはずです...

于 2012-07-12T10:46:05.537 に答える
1

簡単に言えば

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);
  } 

あなたのクラスにコードを入れてくださいsfGuardUserPeer、これは問題を解決します、私がこのエラーを受け取ったときに私は同じことをしました、それは私のために働きました..

于 2016-02-20T08:44:35.627 に答える