ThinkPHP讲解(二)控制器

时间:2023-03-09 21:40:13
ThinkPHP讲解(二)控制器

在这一节,具体讲解控制器,以Jiaowu应用目录为例。

1.如何写控制器,如何写操作方法?

在模块控制器目录Controller下新建一个控制器文件MainController.class.php,写入

<?php
namespace Home\Controller; //在该文件夹下定义一个虚拟的命名空间 use Think\Controller; //调用该目录下的父类 class MainController extends Controller { //继承该父类,定义一个子类 public function Main() //Maincontroller下的Main操作action,放在控制器里面的方法
{
echo "页面显示";
} }

  

2.操作方法里怎样获取配置、修改配置?

<?php
namespace Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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>