• ThinkPHP讲解(二)控制器


    在这一节,具体讲解控制器,以Jiaowu应用目录为例。

    1.如何写控制器,如何写操作方法?

    在模块控制器目录Controller下新建一个控制器文件MainController.class.php,写入

    <?php
    namespace HomeController; //在该文件夹下定义一个虚拟的命名空间
    
    use ThinkController;  //调用该目录下的父类
    	
    class MainController extends Controller { //继承该父类,定义一个子类
    
            public function Main()   //Maincontroller下的Main操作action,放在控制器里面的方法
    	{
    		echo "页面显示";
        }
    
    }
    	
    

      

    2.操作方法里怎样获取配置、修改配置?

    <?php
    namespace HomeController;
    use ThinkController;
    
    class MainController extends Controller
    {
           public function XianShi()
    	{
    		//获取配置  C('配置名');
    		//echo C('URL_MODEL');      //'URL_MODEL'关于路由方式的配置
    		
    		//修改配置  C('配置名',配置值);
    		//C('URL_MODEL',0);
    		//echo U("XianShi"); //U("控制器里的函数名") 获取路径
    			
    	}
    }
    

      

    3.如何实现前置操作、后置操作?

    <?php
    namespace HomeController;
    use ThinkController;
    
    class MainController extends Controller
    {
    	//前置操作
    	public function _before_XianShi()
    	{
    		echo "执行显示之前";
    	}
    	public function XianShi()
    	{	
    		echo "页面显示";
    			
    	}
    	//后置操作
    	public function _after_XianShi()
    	{
    		echo "执行显示之后";
    	}
    }
    

      

    4.向tp框架里注册变量,并在模板界面显示?

            首先,在控制器MainController里Main类写一个操作方法(函数)CeShi,并在该操作方法里向tp框架注册变量

    <?php
    namespace HomeController;
    use ThinkController;
    
    class MainController extends Controller
    {
         public function CeShi()
    	{
    		$this->assign("test","hello");   //往tp框架里注册变量
    		$this->display();
    	}
    }
    

      

            最后,在视图模块目录View文件夹新建一个和类名一样的文件夹Main,并在其文件夹里新建一个和操作方法名一样的html文件CeShi.html

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    
    <div><{$test}></div>
    
    </body>
    </html>
    

      之所以Think模板“<{,}>”标记符和Smarty模板的标记符一样,是因为我们在配置文件config.php里从新配置

    <?php
    return array(
    	//'配置项'=>'配置值'
    	
    	//如果需要做自己的特殊配置,只需将Thinkphp/Conf/convention.php里的内容复制过来,修改一下配置。
    	
    	'TMPL_L_DELIM'          =>  '<{',            // 模板引擎普通标签开始标记
            'TMPL_R_DELIM'          =>  '}>',            // 模板引擎普通标签结束标记
    );
    

      

    5.通过get_defined_constant(true)方法获得信息中user中的路径写法

    '__MODULE__' => string '/tp/index.php/Home'
    '__CONTROLLER__' => string '/tp/index.php/Home/Main'
    '__ACTION__' => string '/tp/index.php/Home/Main/ceshi'

    6.实现操作方法里传递参数

             先写一个带参数的函数

    <?php
    namespace HomeController;
    use ThinkController;
    
    class MainController extends Controller
    {
    
    	public function XianShi($name,$ids)
    	{
    		echo $name."主页面显示".$ids;  //传递参数,在函数名括号里写参数
    			
    	}
    }
    

             在浏览器中输入  http://localhost/tp/home/main/xianshi/$name/zhangsan/$ids/2564

          路由/参数名/参数值

    7.post取值(例:页面登录、显示逻辑)

    首先,在控制器MainController里Main类写一个操作方法(函数)Login,

    <?php
    namespace HomeController;
    use ThinkController;
    
    class MainController extends Controller
    {
         public function Login()
    	{

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

    	}
    }
    

      

            最后,在视图模块目录View文件夹新建一个和类名一样的文件夹Main,并在其文件夹里新建一个和操作方法名一样的Login.html

    <html >
    <head>
    <meta charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <form action="__ACTION__" method="post">
    <div>账号:<input type="text" name="uid"/></div>
    <div>密码:<input type="password" name="pwd"/></div>
    <input type="submit" value="登录"/>
    </form>
    </body>
    </html>
    

      

     

  • 相关阅读:
    typescript中的类型兼容性
    typescript中使用泛型
    分数的乘法逆元和负数的取模运算
    pip2 install protobuf==2.6.1
    git使用代理
    Mount error(5):Input/output error on mount
    cmake 学习笔记(一)
    cmake --help
    ImportError: dynamic module does not define init function (initcaffe)
    docker
  • 原文地址:https://www.cnblogs.com/zst062102/p/5585991.html
Copyright © 2020-2023  润新知