在这一节,具体讲解控制器,以Jiaowu应用目录为例。
1.如何写控制器,如何写操作方法?
在模块控制器目录Controller下新建一个控制器文件MainController.class.php,写入
<?php namespace HomeController; //在该文件夹下定义一个虚拟的命名空间 use ThinkController; //调用该目录下的父类 class MainController extends Controller { //继承该父类,定义一个子类 public function Main() //Maincontroller下的Main操作action,放在控制器里面的方法 { echo "页面显示"; } }
2.操作方法里怎样获取配置、修改配置?
<?php namespace HomeController; use ThinkController; class MainController extends Controller { public function XianShi() { //获取配置 C('配置名'); //echo C('URL_MODEL'); //'URL_MODEL'关于路由方式的配置 //修改配置 C('配置名',配置值); //C('URL_MODEL',0); //echo U("XianShi"); //U("控制器里的函数名") 获取路径 } }
3.如何实现前置操作、后置操作?
<?php namespace HomeController; use ThinkController; class MainController extends Controller { //前置操作 public function _before_XianShi() { echo "执行显示之前"; } public function XianShi() { echo "页面显示"; } //后置操作 public function _after_XianShi() { echo "执行显示之后"; } }
4.向tp框架里注册变量,并在模板界面显示?
首先,在控制器MainController里Main类写一个操作方法(函数)CeShi,并在该操作方法里向tp框架注册变量
<?php namespace HomeController; use ThinkController; class MainController extends Controller { public function CeShi() { $this->assign("test","hello"); //往tp框架里注册变量 $this->display(); } }
最后,在视图模块目录View文件夹新建一个和类名一样的文件夹Main,并在其文件夹里新建一个和操作方法名一样的html文件CeShi.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <div><{$test}></div> </body> </html>
之所以Think模板“<{,}>”标记符和Smarty模板的标记符一样,是因为我们在配置文件config.php里从新配置
<?php return array( //'配置项'=>'配置值' //如果需要做自己的特殊配置,只需将Thinkphp/Conf/convention.php里的内容复制过来,修改一下配置。 'TMPL_L_DELIM' => '<{', // 模板引擎普通标签开始标记 'TMPL_R_DELIM' => '}>', // 模板引擎普通标签结束标记 );
5.通过get_defined_constant(true)方法获得信息中user中的路径写法
'__MODULE__' => string '/tp/index.php/Home'
'__CONTROLLER__' => string '/tp/index.php/Home/Main'
'__ACTION__' => string '/tp/index.php/Home/Main/ceshi'
6.实现操作方法里传递参数
先写一个带参数的函数
<?php namespace HomeController; use ThinkController; class MainController extends Controller { public function XianShi($name,$ids) { echo $name."主页面显示".$ids; //传递参数,在函数名括号里写参数 } }
在浏览器中输入 http://localhost/tp/home/main/xianshi/$name/zhangsan/$ids/2564
路由/参数名/参数值
7.post取值(例:页面登录、显示逻辑)
首先,在控制器MainController里Main类写一个操作方法(函数)Login,
<?php namespace HomeController; use ThinkController; class MainController extends Controller { public function Login() {
//实现两个逻辑,显示页面,实现登录
if(empty($_POST))
{
$this->display();
}
else
{
//实现登录
echo "登录成功";
}
} }
最后,在视图模块目录View文件夹新建一个和类名一样的文件夹Main,并在其文件夹里新建一个和操作方法名一样的Login.html
<html > <head> <meta charset=utf-8" /> <title>无标题文档</title> </head> <body> <form action="__ACTION__" method="post"> <div>账号:<input type="text" name="uid"/></div> <div>密码:<input type="password" name="pwd"/></div> <input type="submit" value="登录"/> </form> </body> </html>