CakePHP在同一个Controller中的非对象上调用成员函数create()

时间:2013-08-15 09:31:28

标签: php cakephp

好的,这真的很奇怪我有以下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');

它没有问题,但是当我已经在绑定到User模型的控制器中时,这是否必要?

2 个答案:

答案 0 :(得分:2)

如果控制器中有$uses数组,则控制器会在实例化时将这些数组作为模型加载。例如:

<?php
class UsersController extends AppController {

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

在上面,用户控制器将加载指定的五个模型。如果您希望实例化用户模型(如果未指定$uses则默认情况下),那么只需将'User'添加到$uses数组中。

答案 1 :(得分:0)

使用$this->Form->create()代替$form->create()

您必须在帮助对象之前使用$this

您的index.php代码应如下所示:

echo $this->Form->create("Contact");