0

我有两个需要通信 OrdersController 和 UsersController 的控制器,因为当新用户下订单时,我会处理我发送到 UsersController::register() 的订单上的注册表单。

我的注册操作在处理篮子后使用 Auth 登录用户,但它返回致命错误:调用非对象上的成员函数 login()

//UsersController::register($data = null)
if(!empty($data))
  $this->request->data['User'] = $data;

if ($this->User->save($this->request->data)) {
  $registeredUser = $this->User->read(null, $this->User->id);
  if ($this->Auth->login($registeredUser['User']))
    if (empty($data))
       $this->redirect($this->Auth->redirect());
    else
       return $this->User->id;
}

我在普通注册页面上使用此操作,也为用户控制器内的其他 api(如 Google 或 Facebook)使用$this->register($data)调用它,它工作正常。但是当我在 OrdersController 中使用它时:

//UsersController::__construct()
public function __construct($request = null, $response = null, $session = null) {
    parent::__construct($request, $response);
    if (isset($session))
        $this->Session = $session;
}

我不得不重写 __construct 因为我遇到了与 setFlash() 相同的问题

//OrdersController::add();
$newUser = new UsersController(null, null, $this->Session);
$newUserId = $newUser->register($data['User']);
4

0 回答 0