0

さて、これは本当に奇妙です。次の test_sign_up アクションがあります。

  public function test_sign_up(){

    if($this->request->is('post')){
        $signup_result = $this->request->data;

        $userData = array('User' => array(
            'username' =>$signup_result['User']['username'],
            'password'=> $signup_result['User']['password'],
            'group_id' => 2,
            'client_id' => 9999));

        $this->User->create();
    if ($this->User->saveAll($userData)) {
        $this->Session->setFlash(__('The user has been saved'));
        $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
    }

    }

}

ユーザーを保存しようとすると、次のようになります。

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

この関数は私の中にあることに注意してくださいUsersController

アップデート

私が行った場合:

$this->loadModel('User');

問題ありませんが、ユーザーモデルにバインドされたコントローラーに既にいる場合は必要ですか?

4

2 に答える 2

2

コントローラーに配列がある場合$uses、コントローラーはインスタンス化時にこれらをモデルとしてロードします。例えば:

<?php
class UsersController extends AppController {

    public $uses = array(
        'Client',
        'Website',
        'Category',
        'Type',
        'WebsiteIssue'
    );
}

上記では、Users コントローラーは指定された 5 つのモデルのみを読み込みます。User モデルもインスタンス化する必要がある場合 (指定されていない場合のデフォルトのように)、同様に配列に$uses追加'User'するだけです。$uses

于 2013-08-15T11:12:02.590 に答える