0

可能重复:
致命错误:调用未定义的方法 CookieComponent::del()

我正在创建一个使用 SiteUsers 控制器中的登录方法的插件,但我收到错误消息:

调用未定义的方法 SiteUsersController::_doLogIn()

插件站点用户控制器:

class SiteUsersController extends AppController {

public $name = 'SiteUsers';


/**
 * login_competition
 *
 */
public function login_challenge() {

    $this->autoRender = false;

    if (!$this->_doLogIn($this->request->data['SiteUser'])) {

            $this->Session->setFlash('ERROR');

        }

    }

    $this->redirect('/');
}

}

主应用程序中的站点用户控制器

class SiteUsersController extends AppController {

public $name = 'SiteUsers';

/**
 * _doLogIn()
 *
 * @param unknown_type $data
 * @return string|string
 */
protected function _doLogIn($data) {

    $this->_user = $this->SiteUser->getUserByEmailPassword(Sanitize::clean($data));

    if (!empty($this->_user)) {

        $this->Session->Write('SiteUser.id', $this->_user['SiteUser']['id']);
        $this->Session->Write('SiteUser.first_name', $this->_user['SiteUser']['first_name']);
        $this->Session->Write('SiteUser.username', $this->_user['SiteUser']['username']);

        return true;
    }

    return false;

}


}
4

1 回答 1

0

我建议您将 _doLogIn 移动到组件中。这样您就不必将其公开,用户也不会直接通过浏览器访问它,并且所有控制器都可以使用它。

当前的 _doLogIn 可以被重写以使用新的组件方法,因此如果广泛使用它在整个站点范围内没有什么大不了的。

以防万一;)http://book.cakephp.org/2.0/en/controllers/components.html

于 2013-01-02T12:22:12.657 回答