我正在使用Cakephp1.3,我试图在beforeFilter函数下的app_controller.php中设置值这里是我的代码。
function beforeFilter() {
$sess = $this->Session->read();
if(isset($sess['Auth']['User'])) {
$checkLogin = 1;
}
else { $checkLogin=0; }
$this->set('checkLogin',$checkLogin);
//$this->Auth->authorize = 'actions';
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
}
现在我想访问user_controller.php中的Checklogin值
我试过这个
function beforeFilter() {
parent::beforeFilter();
echo $checkLogin; exit;
$this->Auth->allow(array('users' => 'login'));
$this->Auth->authorize = 'controller';
}
我收到了这个错误
未定义的变量:: checklogin()
请告诉我这个解决方案
提前致谢
答案 0 :(得分:4)
您必须使用不是本地的实例变量。而不是
$checkLogin
使用
$this->checkLogin
在两个控制器中都能正常工作。
示例:
class AbstractUser{
function __construct(){
$this->instanceVar = true;
$localVar = true;
}
}
class User extends AbstractUser{
function __construct(){
parent::__construct();
}
function useVariables(){
var_dump(isset($this->instanceVar)); # returns true
var_dump(isset($localVar)); # returns false
}
}
$user = new User;
$user->useVariables();
修改强>
更新了示例,使其更像您的用例。
答案 1 :(得分:1)
除非您将其设为全局变量,否则无法访问checkLogin
。请检查variable scope
用PHP。