使用CakePHP的PHP中的静态变量/方法

时间:2014-07-05 03:37:24

标签: php cakephp static-variables

我将标题用户的ID保存在MainController的静态变量中,但我需要在其他控制器中访问此变量。当我尝试从变量中获取值时,结果始终是变量的初始值,即使我已经修改过它。

class MainController extends AppController {
    //...
    public static $loggedClienteId;

    //functions

    public function loginCliente(){
        //code...
        self::$loggedClienteId = $cliente['Cliente']['id'];
        var_dump(MainController::$loggedClienteId); //returns the correct value.
        return $this->redirect(array('controller' => 'clientes', 'action' => 'index'));
    }
}

所以,在另一个控制器......

包括“MainController.php”;

class ClientesController extends AppController {
     public $helpers = array('Html', 'Form');

    public function index() {
        var_dump(MainController::$loggedClienteId); //null, althought it already has a value...
        $this->set('clientes', $this->Cliente->find('all'));
    }
    //functions...
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

使用$this->Auth->user('id')获取当前登录用户的ID。

您的代码不起作用的原因是因为一旦完成登录操作的请求,脚本就结束了。设置变量不会在请求中保持不变。您必须在会话中保存变量。

如果它不是您需要的登录用户ID,您需要做的是使用SessionComponent并使用$this->Session->write('key', 'value');并在另一个请求/控制器$this->Session->read('key');中读取它。 / p>