CakePHP更新public $ uses = false;来自同一个控制器的行动

时间:2014-08-03 23:54:21

标签: cakephp cakephp-2.3

我正在为CakePHP Web应用程序编写安装脚本。我有一个InstallController有6个操作:step1step2step3等。

step1我正在处理Config/database.php创建。由于此文件为空且没有可用的数据源,因此我必须在public $uses = false;中设置InstallController

step2设置Config/database.php文件,以便我能够建立与数据源的连接。这也是必要的,因为我想在以下步骤中更新一些数据库字段。

是否可以在public $uses = false;之后的每个后续步骤中更新step1

我使用CakePHP版本2.3.5

2 个答案:

答案 0 :(得分:0)

在CakePHP 2.x模型中是延迟加载的,因此只要您的step1操作不尝试使用模型,就可以安全地在控制器$uses属性中声明模型,在你的代码实际使用它们之前,它们不会被构造。

但是,如果由于某种原因你实际上需要修改$uses,那么就这样做,因为提到的模型是延迟加载的,所以你可以随时修改$uses然后访问之后通过控制器上的魔法属性模型。

答案 1 :(得分:0)

您是否考虑过在行动中加载模型?所以,像:

<?php

App::uses('AppController', 'Controller');

class InstallController extends AppController {
    public $uses = false;

    public function step1() {

    }

    public function step2() {
        $this->loadModel("Install");
        $this->Install->callMethod();
    }
}