【问题标题】:access to extended class in symfony 1.4在 symfony 1.4 中访问扩展类
【发布时间】:2012-07-11 10:07:52
【问题描述】:

所以...我基本上遵循practical symfony book,遇到了以下问题。 我已经正确(我猜)安装了 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);
  }

}

这是缺少的功能!

所以 - 怎么了?为什么它不起作用? 我已经尝试了所有在谷歌上找到的解决方案,但没有一个有效:/

【问题讨论】:

  • 我猜你已经清除了缓存?重建所有库等.. ?
  • 显然我这样做了...用 symfony cc 清除缓存,以及手动删除文件夹
  • 也许有两个 sfGuardUserPeer 类。尝试在所有代码中搜索“class sfGuardUserPeer”。确保你是正确的(你也可以反序列化 cache/project_autoload.cache 文件搜索类文件路径)。
  • 嗯,这是有道理的。乍一看,我没有看到任何其他这样的课程,但我会检查一下。谢谢你的建议:)

标签: php symfony-1.4 propel sfguard


【解决方案1】:

终于找到了!

symfony propel:build-model

任务不必要地从位于插件目录中的模式文件中生成模型目录中的 sfGuard 类,而所有类都已存在于 sfGuard 文件夹中。

哎呀,在如此完善的框架和插件中不应该发生这种情况......

【讨论】:

    【解决方案2】:

    简单地说

    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 课程,这将解决问题,当我收到此错误时,我做了同样的事情,它对我有用..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2013-01-01
      相关资源
      最近更新 更多