Thinkphp 控制器

Posted 请叫我魔术先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp 控制器相关的知识,希望对你有一定的参考价值。

控 制 器:

1.命名方法:新建一个主页面的控制器

controller文件夹下新建一个文件,命名为:MainController.class.php首字母都大写,称为驼峰命名法

eg:

复制代码
<?php
  namespace Home\\Controller;
  use Think\\Controller;
  class MainController extends Controller
  {
    public function XianShi()
    {
      echo "主页面显示";    
    }    
  }
复制代码

浏览器地址:

运行结果:

 

2. C()方法

C(名称) 获得配置变量(convertion.php config.php)信息
C(名称,值) 设置配置变量信息

  2.1 读取配置:

复制代码
public function XianShi()
{
  //echo "主页面显示";

  //读取配置,不区分大小写
  $model=C(\'URL_MODEL\');
  echo $model;
}
复制代码

运行结果为:1

  2.2 动态配置,修改配置C(\'参数名称\',\'新的参数值\'); 

C(\'URL_MODEL\',0);
echo U("XianShi");

 

 

3.前置和后置操作

复制代码
<?php
namespace Home\\Controller;
use Think\\Controller;
class MainController extends Controller
{
  //前置操作
  public function _before_XianShi()
  {
    echo "执行显示之前"."<br/>";
  }
  public function XianShi()   {     echo "主页面显示"."<br/>";   }
  //后置操作   public function _after_XianShi()   {     echo "执行显示之后"."<br/>";   } }
复制代码

运行结果:

4.Action参数绑定

4.1 一个参数:

public function XianShi($name)
{
    echo $name."主页面显示"."<br/>";
}

 

在浏览器地址栏中添加参数值:
http://localhost:8080/thinkphp/index.php/Home/Main/XianShi/name/zhangsan

运行结果:

4.2 多个参数

public function XianShi($name,$ids)
{
  echo $name.$ids."主页面显示"."<br/>";    
}

 

在浏览器地址栏中添加参数值:
http://localhost:8080/thinkphp/index.php/Home/Main/XianShi/name/zhangsan/ids/666
写参数是前后顺序改变也无所谓

运行结果:

5.调用模版显示

public function CeShi()    
{    
    $this->display();    
}

新建一个方法,调用模版显示

在View文件夹下。新建一个文件夹Main(因为控制器的名称现在是Main),
在里面新建一个文件CeShi.html(如图)

<body>
<!--点击a标签,调用一个方法 -->
<a href="/thinkphp/index.php/Home/Main/XianShi/ids/1/name/zhangsan">调用显示操作</a>
</body>
</html>

 

浏览器地址栏:http://localhost:8080/thinkphp/index.php/Home/Main/CeShi
运行结果:

  点击字体后出现页面:

 

6. URL大小写

浏览器地址栏中对大小写不敏感
Thinkphp/conf/convertion.php中可以修改url大小写:

\'URL_CASE_INSENSITIVE\' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写

复制后粘贴到自己的配置文件中,true改为false发现还是不区分大小写(有bug),
知道有这个配置就好

 

7.后台注册变量,在前台访问

7.1

public function CeShi()
{
    $this->assign("text","Hello");
    $this->display();
}

7.2 修改访问的标记:

由原来的{ }变为<{ }>

\'TMPL_L_DELIM\' => \'<{\', // 模板引擎普通标签开始标记
\'TMPL_R_DELIM\' => \'}>\', // 模板引擎普通标签结束标记

7.3

浏览器地址栏:http://localhost:8080/thinkphp/index.php/Home/Main/CeShi

html中:

<!--点击a标签,调用一个方法 -->
<a href="/thinkphp/index.php/Home/Main/XianShi/ids/1/name/zhangsan">调用显示操作</a>
<div><{$text}></div>

7.4 运行结果:



8. 修改模版引擎,可将下面\'Think\'-->\'Smarty\',不过两者差别不大,不建议修改

\'TMPL_ENGINE_TYPE\' => \'Think\', // 默认模板引擎 以下设置仅对使用Think模板引擎有效

 

9. 输入变量:get,post方式

CeShi.html:

复制代码
<body>
<!--点击a标签,调用一个方法 -->
<a href="/thinkphp/index.php/Home/Main/XianShi/ids/1/name/zhangsan">调用显示操作</a>
<div><{$text}></div>

<!--点击提交,提交到显示方法 -->
<!--<form action="/thinkphp/index.php/Home/Main/XianShi/ids/1/name/zhangsan" method="post"> -->
<form action="__CONTROLLER__/XianShi" method="post">
<input type="text" name="name" />
<input type="submit" value="提交" />
</form>
复制代码
MainController.class.php
复制代码
<?php
namespace Home\\Controller;
use Think\\Controller;
class MainController extends Controller
{    
  public function XianShi()
  {
    //echo $name.$ids."主页面显示"."<br/>";

    //读取配置,不区分大小写
    //C(\'URL_MODEL\',0);
    //echo U("XianShi");

    echo $_POST["name"]."<br/>";
  }

  public function CeShi()
  {
    $this->assign("text","Hello");
    $this->display();

    //调取所有常量信息,加true可分类显示
    //var_dump(get_defined_constants(true));

  }
}
复制代码

运行结果:

      ==>  

 常量:

\'__ROOT__\' => string \'/thinkphp\' (length=9)找根目录

\'__SELF__\' => string \'/thinkphp/index.php/Home/Main/CeShi\' (length=35)当前所有路径(相比action,能取更多内容)

\'__APP__\' => string \'/thinkphp/index.php\' (length=19)取到入口文件
\'__MODULE__\' => string \'/thinkphp/index.php/home\' (length=24)取到当前模块

\'__CONTROLLER__\' => string \'/thinkphp/index.php/home/main\' (length=29)取到当前控制器
\'__ACTION__\' => string \'/thinkphp/index.php/home/main/ceshi\' (length=35)取到当前操作方法

//调取所有常量信息,加true可分类显示
//var_dump(get_defined_constants(true));

10.实现登录页面的操作

MainController.class.php中写一个login方法
复制代码
public function Login()
{
        //实现2个逻辑:显示页面,实现登陆
        if(empty($_POST))
        {
            $this->display();
        }
        else
        {
            //实现登录
            echo "实现登陆!";
        }
}
复制代码

View下新建Login.html
复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录</title>
</head>

<body>
<form action="__ACTION__" method="post">
<input type="text" name="uid" />
<input type="password" name="pwd" />
<input type="submit" value="登录" />
</form>

</body>
</html>
复制代码

运行结果:

      ==>    

以上是关于Thinkphp 控制器的主要内容,如果未能解决你的问题,请参考以下文章

视频学习笔录---ThinkPHP---案例代码

ThinkPHP项目笔记之MVC篇

了解thinkphp

ThinkPHP5 远程代码执行(POST)

thinkPHP入门

如何将CKeditor编辑器的上传和thinkphp结合