我有两个需要通信 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']);