1

ユーザーにログインしようとすると、次のエラーが発生します。

Call to a member function login() on a non-object

私のログインアクションは外部モデルを使用しています。アクションは次のとおりです。

public function login() {

        $this->loadModel('User');

        if ($this->request->is('post')) {

           $theUser = $this->User->find('first', array('conditions' => array('User.username' => $this->request->data['User']['username'])));    

            if($theUser['User']['activated'] == TRUE){

                if ($this->Auth->login($this->request->data)){

                   $this->Session->setFlash('Logged in successfully');

                    $this->redirect(array('controller' => 'admin', 'action' => 'index'));
                } else {

                    $this->Session->setFlash('Username or password is incorrect');
                }
            }else $this->Session->setFlash('User not yet activated. Please Contact administrator.');
        }
    }

に渡されるリクエストデータ$this->Auth->loginは次のとおりです。

array(
    'User' => array(
        'password' => '*****',
        'username' => 'admin'
    )
)

$this->Auth->login($this->request->data)致命的なエラーを引き起こしている行です。

誰かがエラーの正確な意味とそれを引き起こしている可能性があるものを説明できますか?

4

1 に答える 1

5

コントローラーに Auth コンポーネントが含まれていることを確認する必要があります。例えば:

class UsersController extends AppController {

    public $components = array(
        'Auth'
    );

    public function login() { ... }
}

@thaJeztah が指摘したように、コード (の使用法に基づいて 2.x を使用していることを意味する) が正しくなく、ユーザーが存在してログインできるかどうかをテストしないため、正しい使用法についてドキュメントを確認し$this->requestてください。代わりに、ログインフォームに入力したものに直接ユーザーをログインさせます。

于 2013-03-15T19:53:21.290 に答える