TinkPHP框架学习-02控制器基本操作

Posted 半封

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TinkPHP框架学习-02控制器基本操作相关的知识,希望对你有一定的参考价值。

                     1-----创建控制器

                     2-----访问视图页面

                  3-----注册变量到视图页面

                  4-----获取表单数据

一 在Home模块下创建控制器

    举例:  目录tp/Application/Home/Controller下创建TestController.class.php

         访问该控制器 localhost/i/tp/Home/Test/操作方法

    

<?php
namespace Home\\Controller;
use Think\\Controller;
class TestController extends Controller {
    
    public function test(){
        echo "hello!";
    }
     //访问该方法hello   
   //http://localhost/i/tp/index.php/Home/Test/test
}

      博客出自"万年",地址:http://www.cnblogs.com/wannian/p/8998424.html

二  访问方法显示视图页面

    --在Home模块下的View文件夹中

    --新建文件夹与控制器名一样,在此文件夹下建立视图页面

    例如:

      --如果Home/Controller文件夹下有TestController.class.php控制器,并且该控制器有ceshi方法,既Test控制器下TestController类里的ceshi()方法

      --ceshi方法中有  $this->show();  访问该控制器对应的视图文件夹下该方法对应的视图页面

      --那么Home/View文件夹下创建Test文件夹,并创建视图页面ceshi.html

      --访问该页面的方法为: localhost/i/tp/index.php/Home/Test/ceshi Home模块下Test( TestController.class,php )控制器的TestController类下的ceshi()方法

<?php
namespace Home\\Controller;
use Think\\Controller;
class TestController extends Controller {
    public function ceshi(){
        $this->show();
    }
}

 

三  注册变量到视图页面

    ①-- 在TP框架中的方法 :

        --    控制器的方法里注册变量   $this->assign(" 变量名称 "," 变量的值 ");   

                如:  $this->assign(\'uname\',\'张三\');

        --   视图页面访问的方法  {$变量名称}  大括号里面写$符号与变量名称,不能有空格换行等 

                如:  {$uname}   

    ②-- 如果注册的变量是数组,  获取方法: {$arr[\'0\']} 或 {$arr[\'id\']}

    ③--循环输出

        --<foreach>标签,TP特有的循环输出

        --name的值是变量名称( 与方法中的变量名保持一致 ),item的值是获取到的数组的值( 自定义命名 )

        --注册一个数组

    public function test(){
        $arr=array(
          array("code"=>"n001","name"=>"汉族"),
          array("code"=>"n002","name"=>"天族")
        );
        $this->assign("nation",$arr);
        $this->show();

    }

        -- 前端获取

 <select>
       <foreach name="nation" item="v">
            <option value=\'{$v.code}\'>{$v.name}</option>
       </foreach>
 </select>

     ④--if判断

        --<if>标签else标签,TP特有的前端判断

        --<if>标签中condition属性的值是判断条件,

            --判断条件中变量名称需有$符前缀,    例如一个注册变量名称是id,值是0, 那么判断id是应 condition=" $id==0 "

              例如在test方法中注册变量   $this->assign("dc",0);

              前端页面判断并输出,因为dc不等于1所以页面显示李四

        <if condition="$dc==1">
              <b>张三</b>
          <else />
              <i>李四</i>
        </if>

 

     ⑤-- <literal>标签照原样显示,<if>标签<foreach>标签写在该标签内不在执行判断与循环

 

四  获取表单数据     

    ①-- 通过get_defined_constants(true); 方法获取方法的路径,返回一个二维关联数组

        --路径在\'user\'中 因此  var_dump(get_defined_constants(true)[\'user\']);

        --  __ROOT__   TP框架的根路径

        --  __SELF__  自身方法的路径

        --  __APP__  入口目录

        --  __MODULE__  当前模块路径

        --  __CONTROLLER__  到控制器的目录

        --  __ACTION__  到操作方法的目录

    ②-- 前端创建视图页面sub.html  并写入form表单,提交地址为到此页面的操作方法目录__ACTION__

<form action="__ACTION__" method="post">
    <input type="text" name="uid">
    <input type="password" name="pwd">
    <input type="submit" value="登录">
</form>

 

    ③--  在Test控制器中些sub方法获取数据

    public function sub(){

        if(empty($_POST)){
            $this->show();
            //如果POST是空的继续显示提交页面
        }else{
            echo $_POST[\'uid\'];
            //如果有POST则对其操作,或输出或存入数据库等等
        }
        var_dump(get_defined_constants(true)[\'user\']);
    }

 

以上是关于TinkPHP框架学习-02控制器基本操作的主要内容,如果未能解决你的问题,请参考以下文章

2.TinkPHP入门----控制器

Spring框架学习02——Spring IOC 详解

tinkphp 阅读第一天

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

tinkphp5.0 traits 的引入

2019.12.02——Spring学习(ioc)