【问题标题】:symfony sfGuardPlugin Error Call to a member function getId() on a non-object in plugins/sfGuardPlugin/lib/user/sfGuardSecurityUser.class.phpsymfony sfGuardPlugin 错误调用 plugins/sfGuardPlugin/lib/user/sfGuardSecurityUser.class.php 中非对象上的成员函数 getId()
【发布时间】:2012-02-17 05:11:20
【问题描述】:

我正在尝试使用 symfony 1.4 (Propel) 安装 sfGuard 插件。 我知道如何安装它并且它运行良好(我能够注册、登录和注销)。

但是一旦我再次清除缓存,我就无法登录,并且出现此错误:

PHP 致命错误:在非对象上调用成员函数 getId() plugins/sfGuardPlugin/lib/user/sfGuardSecurityUser.class.php 上线 81、推荐人:http://localhost/index.php/login

我不确定我做错了什么,但不知何故我无法让它再次工作。我尝试卸载并重新安装插件。但同样的错误。

我已根据文档修改了我的 app.ymlsettings.ymlrouting.yml。我还修改了apps/myapp/lib/myUser.class.php 以扩展 sfGuardSecurityUser

表单提交进入文件plugins/sfGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php,在$this->getUser()->signIn($values['user'],...)函数调用上form->isValid后失败。

我验证了$values['user'] 具有来自表单的正确值。 signIn 函数依次调用:$this->setAttribute('user_id', $user->getId(), 'sfGuardSecurityUser'); 这就是它无法将$user 作为对象的地方,它仍然是我在表单中传递的“用户名”。

感谢任何帮助。 谢谢!

【问题讨论】:

    标签: symfony1


    【解决方案1】:

    我已验证 $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>
    

    【讨论】:

    【解决方案2】:

    经过一些调试并从头开始,看起来我搞砸了覆盖默认的 sfGuardFormSignin.class.php ,这使得 $user 类无效,因此对其进行的任何函数调用都失败了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      相关资源
      最近更新 更多