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控制器基本操作的更多相关文章

  1. TinkPHP框架学习-01基本知识

    1-----目录结构 2-----访问地址 3-----MVC开发 一 目录结构 |--Application 程序文件夹 |--Common 公共方法函数 |--Home      模块 |也可以自 ...

  2. Yii 框架学习--02 进阶

    应用结构 入口文件 文件位置: web/index.php <?php //开启debug,应用会保留更多日志信息,如果抛出异常,会显示详细的错误调用堆栈 defined('YII_DEBUG' ...

  3. TinkPHP框架学习-04命名空间

    1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...

  4. TinkPHP框架学习-03模型类

    1-----数据访问 2-----数据查询 3-----数据添加 4-----数据修改 5-----数据删除 创建一张nation表并写入三条测试数据 create table nation( `co ...

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

    1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...

  6. 【ci框架学习】控制器-视图

    基础的东西就不写了,网上大把的教程,可以慢慢磨.这里说些要注意的要点. 1.所有控制器都必须间接或者直接继承控制器基类 CI_Controller. 2.文件命名尽量小写,因为ci使用的是pathin ...

  7. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  8. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  9. EF框架学习手记

    转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...

随机推荐

  1. Jrebel 配置

    先下载插件 http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce http://jrebel.autoseasy.cn/xix ...

  2. 普通路由器刷开源固件DD-WRT的简单过程

    DD-WRT是基于Linux的无线路由软件,功能强大,它提供了许多一般路由器的软体所没有的功能,将路由器固件升级到DD-WRT可以提升内建于预设固件的限制,并将其转换成强大且具有进阶功能的商业级路由器 ...

  3. softmax 损失函数求导过程

    前言:softmax中的求导包含矩阵与向量的求导关系,记录的目的是为了回顾. 下图为利用softmax对样本进行k分类的问题,其损失函数的表达式为结构风险,第二项是模型结构的正则化项. 首先,每个qu ...

  4. java8_api_字符串处理

    字符串处理1 字符串处理2    string的常用方法 package java_20180209_api_string; public class StringDemo2 { public sta ...

  5. jQuery汇总

    closest() 方法返回被选元素的第一个祖先元素. $("span").closest("ul")返回 <span> 的第一个祖先元素,是一个 ...

  6. python之jieba库

    jieba “结巴”中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese tex ...

  7. 纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5

    https://www.infoq.cn/article/rh-jbpm5-activiti5# 对jBPM来说,今年最大的事件莫过于 jBPM 的创建者Tom Baeyens离开 JBoss 了.T ...

  8. 作业-haproxy配置文件的增删查(有一个bug不知道咋改)

    # yangqiao #查询 ''' f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding=" ...

  9. K-means之亚洲杯

    import numpy as np import xlrd from sklearn.cluster import KMeans from sklearn import preprocessing ...

  10. 20175236 2018-2019-2 《Java程序设计》第三周学习总结

    教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例 类:class是关键字,用来定义类. 类声明:例如class People. 对象的声明:类的名字 ...