thinKPHP碰到的一些问题
第一个问题:JS中调用TP定义的常量__URL__、__APP__等
TP给我们定义了这些常量确实非常好用,在模板中调用的时候感觉非常舒服。但是,这仅仅是在模板,在JS中就不是那么回事了,看一下如下的关键代码:
$.ajax(
{
type:"post",
url:"__URL__/checkLogin"
}
);
怎么使用都错误,用Firebug一看,发现递交的地址类似于 http://xxx.com/__URL__/checkLogin ,压根就没有解析,解决办法就是在模板文件,也就是html文件中,写入定义JS全局变量的语句,也就是这样子
<script type="text/javascript">
var URL = "__URL__";
var APP = "__APP__";
var ROOT = "__ROOT__";
</script>
现在你可以在相关JS文件中使用这些全局变量来代替路径了,比如上面的ajax提交就可以这样子写
$.ajax(
{
type:"post",
url:URL+"/checkLogin"
}
);
第二个问题:关于登录的问题,要后台管理和登录模块分块。
权限验证最好写在相应的Action中定义的_initialize方法中,(_initialize()函数类中每个函数执行时,都要先执行它)。
class LoginAction extends Action
{
public function _initialize()
{
//checkCookie为判断是否选择长效登录的方法,如果判断长效登录并没有退出登录,则将部分值设置给SESSION变量,也就是为啥下面用SESSION进行判断。
checkCookie();
if($_SESSION[C('MANAGER_KEY')] == 0)
{
//在初始化中实行跳转的话,那么就不能将登录等模块写在同一个Action中,否则未登录状态必然会无线跳转
$this -> redirect("login", "Manage");
}
parent::_initialize();
}
}
第一个问题:JS中调用TP定义的常量__URL__、__APP__等
TP给我们定义了这些常量确实非常好用,在模板中调用的时候感觉非常舒服。但是,这仅仅是在模板,在JS中就不是那么回事了,看一下如下的关键代码:
$.ajax(
{
type:"post",
url:"__URL__/checkLogin"
}
);
怎么使用都错误,用Firebug一看,发现递交的地址类似于 http://xxx.com/__URL__/checkLogin ,压根就没有解析,解决办法就是在模板文件,也就是html文件中,写入定义JS全局变量的语句,也就是这样子
<script type="text/javascript">
var URL = "__URL__";
var APP = "__APP__";
var ROOT = "__ROOT__";
</script>
现在你可以在相关JS文件中使用这些全局变量来代替路径了,比如上面的ajax提交就可以这样子写
$.ajax(
{
type:"post",
url:URL+"/checkLogin"
}
);
第二个问题:关于登录的问题,要后台管理和登录模块分块。
权限验证最好写在相应的Action中定义的_initialize方法中,(_initialize()函数类中每个函数执行时,都要先执行它)。
class LoginAction extends Action
{
public function _initialize()
{
//checkCookie为判断是否选择长效登录的方法,如果判断长效登录并没有退出登录,则将部分值设置给SESSION变量,也就是为啥下面用SESSION进行判断。
checkCookie();
if($_SESSION[C('MANAGER_KEY')] == 0)
{
//在初始化中实行跳转的话,那么就不能将登录等模块写在同一个Action中,否则未登录状态必然会无线跳转
$this -> redirect("login", "Manage");
}
parent::_initialize();
}
}