• 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>

    运行结果:

          ==>    



  • 相关阅读:
    POJ 1330 Nearest Common Ancestors(LCA Tarjan算法)
    LCA 最近公共祖先 (模板)
    线段树,最大值查询位置
    带权并查集
    转负二进制
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
  • 原文地址:https://www.cnblogs.com/ds-3579/p/5584276.html
Copyright © 2020-2023  润新知