zoukankan      html  css  js  c++  java
  • Thinkphp 控制器

    控 制 器:

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

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

    eg:

    复制代码
    <?php
      namespace HomeController;
      use ThinkController;
      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 HomeController;
    use ThinkController;
    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 HomeController;
    use ThinkController;
    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>
    复制代码

    运行结果:

          ==>    

  • 相关阅读:
    Java中hashCode() 和 equals()
    【转】Java操作Excel竟然这么简单!
    SpringMVC上
    网络基础知识(2)
    网络基础知识 (1)
    线程的安全
    多线程
    字符编码ANSI和ASCII区别、Unicode和UTF-8区别
    序列化对象
    IO流_File类
  • 原文地址:https://www.cnblogs.com/mantou1314/p/5629721.html
Copyright © 2011-2022 走看看