控 制 器:

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 控制器的更多相关文章

  1. ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

    ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...

  2. ThinkPHP控制器

    ThinkPHP控制器Controller 1.什么是控制器 在MVC框架中,其核心就是C(Controller)控制器.主要用于接收用户请求,处理业务逻辑. 2.控制器的定义 在一个ThinkPHP ...

  3. Thinkphp控制器,1.多层控制器2.多级控制器

    1.多层控制器 ThinkPHP的控制器支持多层和多级,多层指的是控制器可以分层,例如除了默认的Controller控制器层(我们可以称之为访问控制器),还可以添加事件控制器(层),例如: ├─Con ...

  4. 6月13 ThinkPHP控制器

    控制器 控制器是MVC模式中的核心,tp默认有一个Index控制器: 1.控制器的命名规则:新建一个主页面的控制器 在JiaoWu/Home/Controller下新建一个文件:MainControl ...

  5. thinkphp 控制器定义

    控制器和操作 一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法. 下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; ...

  6. 关于ThinkPHP控制器的方法失效的问题

    今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...

  7. ThinkPHP控制器输出防止乱码小技巧

    在控制器中加一句:试试看 header('content-type:text/html;charset=utf-8');

  8. thinkphp 控制器unset删除对象变量失败。。

    今儿开发过程中发现 tp是unset 变量失败..具体代码 foreach( $this->menu as $k => $v){ if(0 == $v['flag']) unset($th ...

  9. thinkphp控制器的使用

    控制器的使用 2.1url如何调用控制器 以典型的URL为例  http://localhost/shop/index.php/home/index/test /*home/controller/in ...

随机推荐

  1. poj Cash Machine

    http://poj.org/problem?id=1276 #include<cstdio> #include<cstring> #include<cmath> ...

  2. COJ 0200 Fibonacci

    传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=200 试题描述: 地球人都知道Fibonicca数列: 1 1 2 3 5 ...

  3. Qt入门(7)——QApplication类

    QApplication类管理图形用户界面应用程序的控制流和主要设置.它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度.也用于处理应用程序的初始化和结束,并且提供对话管理.它也处理 ...

  4. ajax使用jsonp解决跨域问题

    发现这几篇博客写的不错,转载过来看: js跨域及解决方案   http://www.cnblogs.com/oneword/archive/2012/12/03/2799443.html 如何解决aj ...

  5. 【线段树】HDU 5443 The Water Problem

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 题目大意: T组数据.n个值,m个询问,求区间l到r里的最大值.(n,m<=1000) ...

  6. centos 64bit 安装与升级 chrome的方法

    vim /etc/yum.repos.d/CentOS-Base.repo 根据你的系统增加一个节点 [google64] name=Google - x86_64 baseurl=http://dl ...

  7. 深度优先搜索-linux上浅显易懂的例子

    上次看啊哈算法中的深度优先搜索,自己用的是linux(linux粉,windows黑,嘿嘿),字符界面,为了强化对这个的理解,就在linux上对这个例子的代码做了一点修改可以很清楚的看到整个搜索过程, ...

  8. SpringMVC进行文件的上传以及多文件的上传(转)

    基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:htt ...

  9. 【移动开发】Android中将我们平时积累的工具类打包

    Android开发的组件打包成JAR安装包,通过封闭成JAR包,可以重复利用,非常有利于扩展和减少工作重复性.这里为了讲解方便,我用了之前的一个代码框架中核心部分,不了解的可以回头看一下:http:/ ...

  10. spring依赖注入源码分析和mongodb自带连接本地mongodb服务逻辑分析

    spring依赖注入本质是一个Map结构,key是beanId,value是bean对应的Object. autowired是怎么将定义的接口与对应的bean类建立联系? <bean name= ...