我将标题用户的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...
}
为什么会这样?
答案 0 :(得分:1)
使用$this->Auth->user('id')
获取当前登录用户的ID。
您的代码不起作用的原因是因为一旦完成登录操作的请求,脚本就结束了。设置变量不会在请求中保持不变。您必须在会话中保存变量。
如果它不是您需要的登录用户ID,您需要做的是使用SessionComponent
并使用$this->Session->write('key', 'value');
并在另一个请求/控制器$this->Session->read('key');
中读取它。 / p>