ThinkPHP讲解(二)控制器
在这一节,具体讲解控制器,以Jiaowu应用目录为例。
1.如何写控制器,如何写操作方法?
在模块控制器目录Controller下新建一个控制器文件MainController.class.php,写入
<?php
namespace Home\Controller; //在该文件夹下定义一个虚拟的命名空间 use Think\Controller; //调用该目录下的父类 class MainController extends Controller { //继承该父类,定义一个子类 public function Main() //Maincontroller下的Main操作action,放在控制器里面的方法
{
echo "页面显示";
} }
2.操作方法里怎样获取配置、修改配置?
<?php
namespace Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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 Home\Controller;
use Think\Controller; 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>
ThinkPHP讲解(二)控制器的更多相关文章
- ThinkPHP框架二
ThinkPHP笔记二 1.1 TP框架的配置文件 在TP框架中,所有的配置文件都是自动加载的,加载的顺序:惯例配置<应用配置<调试配置<模块配置<动态配置 1. 惯例配置(T ...
- Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)
原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...
- PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用
ThinkPHP框架的控制器模块是如何实现 前控制器.后控制器,及如何执行带参数的方法? PHP系统自带的 ReflectionClass.ReflectionMethod 类,可以反射用户自定义类的 ...
- ThinkPHP 5.0 控制器-》请求-》数据库
ThinkPHP 5.0 控制器->请求->数据库 控制器总结 无需继承其他的类(若继承了Think/Controller,可直接调用view函数渲染模板),位置处于application ...
- 风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二)
风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二) 05后缀名黑名单校验之上传.htaccess绕过 还是使用黑名单,禁止上传所有web容器能解析的脚本文件的后缀 $is_upload = ...
- ThinkPHP 学习笔记 ( 二 ) 控制器 ( Controller )
/** * ThinkPHP version 3.1.3 * 部署方式:应用部署 * 文内的 http://localhost/ 由实际主机地址代替 */ 入口文件 index.php: <?p ...
- ThinkPHP讲解(十二)——文本编辑器和ajax传址
一.文本编辑器 1.首先,在网上下载ueditor文件 2.在要添加文本编辑器的页面中引用ueditor文件中的js文件 <script type="text/javascript&q ...
- ThinkPHP讲解(一)框架基础
ThinkPHP框架知识点过于杂乱,接下来将以问题的形势讲解tp(ThinkPHP的简写) 1.tp框架是什么,为什么使用是它? 一堆代码的集合,里边有变量.函数.类.常量,里边也有许多设计模式MVC ...
- thinkphp使用模块/控制器/操作访问时出现No input file specified.解决方式
thinkphp使用 http://serverName/index.php/模块/控制器/操作 访问时,出现了 No input file specified. 的错误 解决办法: 一: 开启cgi ...
随机推荐
- C#访问url地址并返回数据
public partial class Form1 : Form { static bool isSelect = false; public Form1() { InitializeCompone ...
- 使用git Rebase让历史变得清晰
当多人协作开发一个分支时,历史记录通常如下方左图所示,比较凌乱.如果希望能像右图那样呈线性提交,就需要学习git rebase的用法. “Merge branch”提交的产生 我们的工作流程是:修改代 ...
- Magento的迁移方法
Magento有很多配置内容,比如说CMS配置页.Static Stock.多语言配置等等,所以做数据迁移很有必要性,下面就说说如何做迁移 这个技术文章是从网上整理的,不过一个很重要的点被疏忽了,我在 ...
- Android开发笔记-加载xml资源
1.Activity获取strings.xml中键的值 需要通过 getResources().getString(R.string.*)方法获得 以“state”为例 String value= g ...
- CS6破解
1) 序列号这里为大家生成了两个,可以通过软件验证:1325-0949-2080-9819-3777-32301325-0160-5283-9851-2671-8951 2) 破解补丁安装时会用到,请 ...
- ar1020 驱动移植 无效
移植ar1020的spi驱动.驱动移植过来后,在原来的板子上都能够正常运行,而在新的板子却没有效果. 最后查看新旧板子的AR1020的电路,发现M2引脚连接不同.M2高电平连接的touch是5线的接口 ...
- imx6 uboot lvds clock
在uboot中添加logo,lvds接口的lcd显示不正常,出现波动.网上说是lvds时钟频率的问题. 使用示波器测量之后,发现频率是60M,而lcd最大频率才46.8M. 因此就需要更改uboot中 ...
- C#对象的声明与实例化
在代码中我们经常能看到下面这样的语句. A a = new A();(1) B b = null;(2) C c;(3) 代码( 1 ) 创建 A 的对象并对其进行初始化. A :类: new A() ...
- zabbix使用tokudb引擎替换innodb引擎
zabbix数据量大,数据量增长很快,使用tokudb可以更好的压缩 使用tokudb,用percona 或mariadb数据库 1.查看数据库版本 (1)登录数据库的时候可以看到 (2)status ...
- [BS-13] 创建和注册UITableViewCell及Storyboard和Xib区别
创建和注册UITableViewCell及Storyboard和Xib区别 // 界面创建完成被调用 - (void)viewDidLoad { [super viewDidLoad]; /** 如果 ...