空操作
(1) 当控制器的动作没找到时,如果空操作存在,会执行这个空操作
public function _empty(){
header("Content-type:text/html;Charset=utf-8");
$this->display();
}
初始化操作
(1)当控制器的动作没找到时,如果空操作存在,会执行这个空操作
(2)通常用于错误提示,导航类的跳转
public function _empty(){
$this->display('wrong');
}
<a href='__APP__'>首页</a>
display()的其他参数
display('显示的模板文件','输出的编码','输出文件格式')
display()方法的使用
(1)不带参数,会找到对应的分组/控制器/模板
$this->display();
public function _empty(){
header("Content-type:text/html;Charset=utf-8");
$this->display();
}
(2)当前控制器的某个动作对应模板
$this->display('动作名');
public function _empty(){
header("Content-type:text/html;Charset=utf-8");
$this->display ('wrong');
}
(3)调用其他模块的操作
$this->display('User:reg');
public function dis(){
$this->display('Ca:reg');}
(4)通过全路径实现
$this->display('./App/Tpl/Home/User/reg.hrml');
public function dis(){
$this->display('App/Tpl/Admin/Goods/show.html');}
获得外部数据(系统变量)
1,$_GET、 $_POST、$_SERVER、$_REQUEST 等方式来获取系统变量
访问方式:
$this->_get('变量名');
获得访问服务器的外来用户的ip地址
echo$this->_server('REMOTE_ADDR');
获得当前服务器的ip地址
echo$this->_server('SERVER_ADDR');
获得地址栏中的name
echo $this->_get('name');
获得系统常量
//获得当前的项目名称
echo APP_NAME;
//当前分组的名称
echo GROUP_NAME;
//当前控制其名称
echo MODULE_NAME;
//当前动作名称
echo ACTION_NAME;
如何在TP框架中使用Ajax
以jQuery中的ajax为例:
(1)引入jQuery
通过模板替换表示路径,我们可以自定义模板替换变量
(2)发送ajax请求
(3)ajax回应(ajaxReturn()方法)
该方法会将控制器回应的数据进行json编码
ajaxReturn('返回的数据','提示信息','操作状态')
请求成功返回1,失败返回0
Eg:Action文件
public function ajax(){
//去数据库进行查询,验证用户名和密码是否正确
$user_model = M('Mysql_user');
$pass = $user_model->field('user_pass')->where("user_name='".$_POST['username']."'")->select();
//var_dump($pass);
//echo $_POST['username'];
//echo $_POST['password'];
if($pass[0]['user_pass'] !=$_POST['password']){
echo 'wrong';
}else {
echo 'right';
}
}
Tpl文件
<form action='' method='POST'>
用户名:<input type='text' name='username' id='username'><br/>
密码:<input type='password'name='password' id='password'><br/>
<input type='button' value='登陆' id='value'>
</form>
<script type='text/javascript'src='__Js__/jquery.js'></script>
<script type='text/javascript'>
$(function(){
$("#value").click(function(){
$.ajax({
type:'POST', data:'username='+$("#username").val()+'&password='+$("#password").val(),
url:'__URL__/ajax',
async:true,
dataType:'json',
success:function(msg){
alert(msg.data);
}
});
});
})
</script>
URL的生成
在ThinkPHP中存在多种URL模式,可以配置
1,普通模式:
index.php?m=user&a=add&id=10
2,pathinfo模式:
index.php/Admin/user/add/id/10
3,重写模式,和pathinfo模式相同,只是少了入口文件
我们是通过在配置文件中增加配置项(URL_MODEL)来实现的
/*修改url的模式*/
'URL_MODEL' =>2,
URL的生成
配置完后需要使用U函数来生成url,格式为:
U(‘分组名/控制器名/动作名’,array(‘id’=>100,’age’=>23))
public function url(){
echo U('Home/Common/url',array('id'=>100,'name'=>'xiaoliang'));
}
如何在模板中使用URL函数
在模板中调用此函数的格式为:
{:函数名(‘参数列表’)}
<ahref="{:U('Admin/Goods/show')}">返回首页</a>