ThinkPHP讲解(二)控制器

在这一节,具体讲解控制器,以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>

  

 

原文地址:https://www.cnblogs.com/zst062102/p/5585991.html