• ThinkPHP控制器


    控制器

    控制器是MVC模式中的核心,tp默认有一个Index控制器:

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

    在JiaoWu/Home/Controller下新建一个文件:MainController.php书写方式是驼峰法,即首字母大写Main是控制器的名称,并做一个XianShi的方法

    里面的内容书写方式仿照之前的IndexController.php

    <?php
    namespace HomeController;
    use ThinkController;
    class MainController extends Controller
    {
        public function Xianshi()//$name,$ids)//参数的顺序无所谓
        {
            echo "Hello ";
            
        } 
    }

    以下是运行后的结果:

     2.C()方法

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

    配置修改的方法是在config.php中:如下

    <?php
    return array(
        //'配置项'=>'配置值'
        'URL_MODEL'             =>  1,       // URL访问模式,可选参数0、1、2、3,代表以下四种模式:
        // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默认为PATHINFO 模式

    读取配置:

    <?php
    namespace HomeController;
    use ThinkController;
    class MainController extends Controller
    {
        public function Xianshi()//$name,$ids)//参数的顺序无所谓
        {
            
            $model = C('URL_MODEL');//读取配置
            echo $model;        
            //C('URL_MODEL',0);//0可以2,3不可以读取和修改配置
            //echo U("admin");
            //echo "Hello";

    运行后结果是:1

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

    使用:

    C('URL_MODEL',0);//0可以2,3不可以读取和修改配置
    echo U("admin");

    显示结果:

    3.前置操作和后置操作

    <?php
    namespace HomeController;
    use ThinkController;
    class MainController extends Controller
    {
        //前置操作(自动调用)
        public function _before_Xianshi()
        {
            echo "执行显示之前<br>";    
        }
        public function Xianshi()//$name,$ids)//参数的顺序无所谓
        {
            echo "Hello<br>";
            
        } 
        //后置操作
        public function _after_Xianshi()
        {
            echo "执行显示之后";    
        }

    运行后的结果:

    4.Action绑定参数 

    当一个参数时

    public function Xianshi($name)
        {
            echo $name."主页面<br>";  
        } 

    显示结果:

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

    显示结果:(参数的顺序是无所谓)

    5.调用模板信息:

    控制器里面的方法是:

    public function CeShi()//调用模板显示
        {
            $this->display();
        }

    在view下面新建如下的目录及文件,文件叫做CeShi.html

    显示代码:

    <body>
    <a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
    </body>
    </html>

    访问路径:http://localhost:8080/tp/index.php/Home/Main/CeShi

    跳转后为:http://localhost:8080/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan

    页面显示效果:

          

     6.URL大小写

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

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

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

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

    后台注册的方法与Smarty模板类似:

    public function CeShi()//调用模板显示
        {
            $this->assign("test","hello");
            $this->display();
    
        }

    修改配置中的开始结束标记:

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

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

    html模板内容:

    <body>
    <!--所传的参数的位置可以变化-->
    <a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
    <div><{$test}></div>
    </body>
    </html>

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

    显示内容:

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

    两者很多内容是相连的,有很多方法都相似

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

    9.获取输入变量:POST与GET方法

    CeShi.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>
    <!--所传的参数的位置可以变化-->
    <a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
    <div><{$test}></div>
    
    <!--<form action="/tp/index.php/Home/Main/Xianshi" method="post">-->
    <form action="__CONTROLLER__/Xianshi" method="post">
    <input type="text" name="name" />
    <input type="submit" value="提交" />
    </form>
    
    
    </body>
    </html>

    MainController.class.php

    <?php
    namespace HomeController;
    use ThinkController;
    class MainController extends Controller
    {
        public function Xianshi()//$name,$ids)//参数的顺序无所谓
        {    
            echo $_POST["name"];
        } 
        
        public function CeShi()//调用模板显示
        {
            //var_dump(get_defined_constants(true));
            $this->assign("test","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)取到当前操作方法

    10.实现页面的登录

    在MainContriller.class.php中新建一个方法

    public function Login()
        {
            //实现两个逻辑:显示页面,实现登录
            if(empty($_POST))
            {
                $this->display();    
            }
            else
            {
                //实现登录
                echo "实现登录";    
            }
        }

    在View中新建Login目录然后新建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="name" /><br />
    请输入密码:<input type="password" name="pwd" /><br />
    <input type="submit" value="登录" />
    </form>
    </body>
    </html>

    运行过后:

  • 相关阅读:
    转载: 如何让form表单在enter键入时不提交
    26个Jquery使用小技巧
    PHP网站页面静态化的生成方法介绍
    用jquery绑定输入框正在输入时返回操作
    PHP开发规范手册之PHP代码规范详解
    Web开发中9个有用的提示和技巧
    TSINGSEE青犀视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
    应急消防通道总是被占用?安防告警视频平台越加必要
    新冠疫情涨涨落落,企业做好线上办公该如何转型?
    【解决方案】如何实现AI自动识别高空抛物行为?
  • 原文地址:https://www.cnblogs.com/kevin2016/p/5721740.html
Copyright © 2020-2023  润新知