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控制器基本操作的更多相关文章
- TinkPHP框架学习-01基本知识
1-----目录结构 2-----访问地址 3-----MVC开发 一 目录结构 |--Application 程序文件夹 |--Common 公共方法函数 |--Home 模块 |也可以自 ...
- Yii 框架学习--02 进阶
应用结构 入口文件 文件位置: web/index.php <?php //开启debug,应用会保留更多日志信息,如果抛出异常,会显示详细的错误调用堆栈 defined('YII_DEBUG' ...
- TinkPHP框架学习-04命名空间
1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...
- TinkPHP框架学习-03模型类
1-----数据访问 2-----数据查询 3-----数据添加 4-----数据修改 5-----数据删除 创建一张nation表并写入三条测试数据 create table nation( `co ...
- Spring框架学习02——Spring IOC 详解
1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...
- 【ci框架学习】控制器-视图
基础的东西就不写了,网上大把的教程,可以慢慢磨.这里说些要注意的要点. 1.所有控制器都必须间接或者直接继承控制器基类 CI_Controller. 2.文件命名尽量小写,因为ci使用的是pathin ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- Android Testing学习02 HelloTesting 项目建立与执行
Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...
- EF框架学习手记
转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...
随机推荐
- 3. Port scanners (端口扫描器 4个)
3. Port scanners (端口扫描器 4个) 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现(“ping扫描”)和端口扫描. 旧的2.x版本只有Windows,但是,新的3. ...
- 【scrapy】笔记一:安装,以及遇到的坑
一.前提 环境:python 3.7 操作系统: windows ;mac 二.安装步骤 mac : pip3 install scarpy //因为MAC自带python2.7所有我们用pip3指定 ...
- Cocostudio 1.4 实现的Demo程序源码
开发环境是CocoStudio 1.4 + Cocos2dx 2.2.3 把项目文件放到Cocos2dx下的projects文件夹下就可以执行了 压缩包里面包括了 源码 和资源文件 1.DemoSh ...
- 记一次java电话面试
答案补充中... 一.java基础 1.简述java的几种基本数据类型 JAVA的基本数据类型有:byte.char.boolean.short.int.long.float.double 2.什么是 ...
- MPU9250九轴陀螺仪--读接口数据
1.使用i2c链接到树莓派的scl , sda 接口vcc给3v引脚,gnd接树莓派gnd就ok. 2.要操作mpu必须使用mpu的寄存器实现对参数的设定以及读取,取官方下载资料看了一下,在githu ...
- java 类的初始化顺序
有父类 1. 父类static成员变量 2. 父类static块 3. 父类非static成员 4. 父类非static块 5. 父类构造方法 子类,也按照1-5顺序执行 无父类 1. static成 ...
- SQL数据库日志清理
USE [master] GO ALTER DATABASE HCPM_01_181230 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE HCP ...
- ES - Dynamic templates 动态模板
1.ES Mapping 在lucene中,索引中每个字段都需要指定很多属性,例如:是否分词.采用哪个分词器.是否存储等. 在ES中,其实索引中每个字段也需要指定这些属性,我们有时候并没有对这些属性进 ...
- Group(), Groups(),& Groupdict() 用法
group() 返回一个或多个匹配的字串.如果只有一个参数,结果只有单个字符串:如果有多个参数,结果是一个元组,元组里每一项对应一个参数.没有参数,group1默认是0(整个匹配串被返回).如果gro ...
- DynamicEnumUtil 动态添加枚举类的枚举值
import java.lang.reflect.AccessibleObject; import java.lang.reflect.Array; import java.lang.reflect. ...