如何使用控制器的不同型号?

时间:2014-03-07 11:57:36

标签: php cakephp cakephp-model

我正在尝试使用Cakephp插入记录。我的模型名称类似于User.php。 我的工作控制器名称是SignupsController。我想使用这两个插入记录,但我不能。我在下面给出了一些代码:

查看:

<?php echo $this->Form->create('Signups',array('action' => 'registration'));?>
                        <div class="row-fluid">
                            <div class="span5">
                                <label class="">*First Name</label>
                                <?php echo $this->Form->input('first_name', array('type' => 'text','label' => false, 'class' => 'input-xlarge validate[required]', 'div' => false)); ?>
                            </div>
                            <div class="span5">
                                <label class="">*Last Name</label>
                                <?php echo $this->Form->input('last_name', array('type' => 'text', 'label' => false, 'class' => 'input-xlarge validate[required]', 'div' => false)); ?>
                            </div>
                        </div>
<?php echo $this->Form->end(); ?>

我的控制器代码如下:

class SignupsController extends AppController {

var $name = 'Signups';
var $uses=array("User");



public function registration()
    {
        $this->layout="reserved";
        $this->Club->create();
        if (isset($_POST['registration'])) {
            echo "This is";

            echo "<pre>";print_r($this->request->data);echo"</pre>";
            $this->User->save($this->request->data);
            //$this->Session->setFlash(__('Promoter registration has been done successfully'));
            //$this->redirect('registration');
            //$this->redirect(array('action' => 'registration'));
        } 
    }

}

我的型号名称不同,其名称为User.php 我想使用上面的代码插入记录。任何想法如何插入?

2 个答案:

答案 0 :(得分:1)

您可以通过在当前控制器中加载用户模型来执行此操作,只需编写以下行

即可

$this->loadModel('Name of the Model')

然后

$this->nameofmodel->save()

你无法理解,请看这个

Controller::loadModel(string $modelClass, mixed $id)¶
The loadModel() function comes handy when you need to use a model which is not the     controller’s default model or its associated model:

$this->loadModel('Article');
$recentArticles = $this->Article->find(
'all',
array('limit' => 5, 'order' => 'Article.created DESC')
);

$this->loadModel('User', 2);
 $user = $this->User->read();

以上粘贴的代码来自CakeBook的CookBook,如果您仍然不理解read it它有完整的详细解释,您也可以看到to understand

答案 1 :(得分:1)

您可以将其与$uses

中的SignupController变量一起使用
class SingupController extends AppController
{
    public $uses = array('User');

    //rest of stuff
}

或者,如果您愿意,可以在方法内按需加载:

$this->loadModel('User'); //now model is loaded inside controller and used via $this->User

编辑:您的数据阵列必须包含您要保存的模型的名称。所以,替换:

$this->Form->create('Signups',array('action' => 'registration')

使用:

$this->Form->create('User',array('url' => array('controller' => 'signups', 'action' => 'registration'));