6月13 ThinkPHP控制器
控制器
控制器是MVC模式中的核心,tp默认有一个Index控制器:
1.控制器的命名规则:新建一个主页面的控制器
在JiaoWu/Home/Controller下新建一个文件:MainController.php书写方式是驼峰法,即首字母大写Main是控制器的名称,并做一个XianShi的方法
里面的内容书写方式仿照之前的IndexController.php
<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{
public function Xianshi()//$name,$ids)//参数的顺序无所谓
{
echo "Hello "; }
}
以下是运行后的结果:
2.C()方法
C(名称) 获得配置变量(convertion.php config.php)信息
C(名称,值) 设置配置变量信息
配置修改的方法是在config.php中:如下
<?php
return array(
//'配置项'=>'配置值'
'URL_MODEL' => 1, // URL访问模式,可选参数0、1、2、3,代表以下四种模式:
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式
读取配置:
<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{
public function Xianshi()//$name,$ids)//参数的顺序无所谓
{ $model = C('URL_MODEL');//读取配置
echo $model;
//C('URL_MODEL',0);//0可以2,3不可以读取和修改配置
//echo U("admin");
//echo "Hello";
运行后结果是:1
动态配置,修改配置C('参数名称','新的参数值');
使用:
C('URL_MODEL',0);//0可以2,3不可以读取和修改配置
echo U("admin");
显示结果:
3.前置操作和后置操作
<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{
//前置操作(自动调用)
public function _before_Xianshi()
{
echo "执行显示之前<br>";
}
public function Xianshi()//$name,$ids)//参数的顺序无所谓
{
echo "Hello<br>"; }
//后置操作
public function _after_Xianshi()
{
echo "执行显示之后";
}
运行后的结果:
4.Action绑定参数
当一个参数时
public function Xianshi($name)
{
echo $name."主页面<br>";
}
显示结果:
当两个参数时
public function Xianshi($name,$ids)
{
echo $name.$ids."主页面<br>";
}
显示结果:(参数的顺序是无所谓)
5.调用模板信息:
控制器里面的方法是:
public function CeShi()//调用模板显示
{
$this->display();
}
在view下面新建如下的目录及文件,文件叫做CeShi.html
显示代码:
<body>
<a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
</body>
</html>
访问路径:http://localhost:8080/tp/index.php/Home/Main/CeShi
跳转后为:http://localhost:8080/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan
页面显示效果:
6.URL大小写
浏览器地址栏中对大小写不敏感
Thinkphp/conf/convertion.php中可以修改url大小写:
'URL_CASE_INSENSITIVE' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写
复制后粘贴到自己的配置文件中,true改为false发现还是不区分大小写(有bug),
知道有这个配置就好
7.后台注册变量,在前台访问
后台注册的方法与Smarty模板类似:
public function CeShi()//调用模板显示
{
$this->assign("test","hello");
$this->display(); }
修改配置中的开始结束标记:
由原来的{}改为<{}>
'TMPL_L_DELIM' => '<{', // 模板引擎普通标签开始标记
'TMPL_R_DELIM' => '}>', // 模板引擎普通标签结束标记
html模板内容:
<body>
<!--所传的参数的位置可以变化-->
<a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
<div><{$test}></div>
</body>
</html>
浏览器的地址栏:http://localhost:8080/tp/index.php/Home/Main/CeShi
显示内容:
8. 修改模版引擎,可将下面'Think'-->'Smarty',不过两者差别不大,不建议修改
两者很多内容是相连的,有很多方法都相似
'TMPL_ENGINE_TYPE' => 'Think', // 默认模板引擎 以下设置仅对使用Think模板引擎有效
9.获取输入变量:POST与GET方法
CeShi.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<!--所传的参数的位置可以变化-->
<a href="/tp/index.php/Home/Main/Xianshi/ids/1/name/zhangsan">调用显示操作</a>
<div><{$test}></div> <!--<form action="/tp/index.php/Home/Main/Xianshi" method="post">-->
<form action="__CONTROLLER__/Xianshi" method="post">
<input type="text" name="name" />
<input type="submit" value="提交" />
</form> </body>
</html>
MainController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{
public function Xianshi()//$name,$ids)//参数的顺序无所谓
{
echo $_POST["name"];
} public function CeShi()//调用模板显示
{
//var_dump(get_defined_constants(true));
$this->assign("test","hello");
$this->display(); }
}
常量:
调取所有常量信息,加true可分类显示
var_dump(get_defined_constants(true));
'__ROOT__' => string '/thinkphp' (length=9)找根目录
'__SELF__' => string '/thinkphp/index.php/Home/Main/CeShi' (length=35)当前所有路径(相比action,能取更多内容)
'__APP__' => string '/thinkphp/index.php' (length=19)取到入口文件
'__MODULE__' => string '/thinkphp/index.php/home' (length=24)取到当前模块
'__CONTROLLER__' => string '/thinkphp/index.php/home/main' (length=29)取到当前控制器
'__ACTION__' => string '/thinkphp/index.php/home/main/ceshi' (length=35)取到当前操作方法
10.实现页面的登录
在MainContriller.class.php中新建一个方法
public function Login()
{
//实现两个逻辑:显示页面,实现登录
if(empty($_POST))
{
$this->display();
}
else
{
//实现登录
echo "实现登录";
}
}
在View中新建Login目录然后新建login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<!--指向自身-->
<form action="__ACTION__" method="post">
请输入用户名:<input type="text" name="name" /><br />
请输入密码:<input type="password" name="pwd" /><br />
<input type="submit" value="登录" />
</form>
</body>
</html>
运行过后:
6月13 ThinkPHP控制器的更多相关文章
- 6月13 ThinkPHP框架基础
ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...
- JavaScript图表FusionCharts免费在线公开课,由印度原厂技术工程师主讲,10月13日发车
FusionCharts公开课达人还你做 轻松晋升图表大师 [开课时间]10月13日 14:30[主讲老师]印度原厂技术工程师[开课形式]网络在线公开课[活动费用]前50名免费 现在就可以报名哦 报 ...
- ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...
- [转载]Ubuntu17.04(Zesty Zapus)路线图发布:2017年4月13日发布
Canonical今天公布了Ubuntu 17.04(Zesty Zapus)操作系统的发布路线图,该版本于今年10月24日上线启动,toolchain已经上传且首个daily ISO镜像已经生成.面 ...
- 2015年12月13日 spring初级知识讲解(四)面向切面的Spring
2015年12月13日 具体内容待补充...
- 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...
- 2016年12月13日 星期二 --出埃及记 Exodus 21:8
2016年12月13日 星期二 --出埃及记 Exodus 21:8 If she does not please the master who has selected her for himsel ...
- 2016年11月13日 星期日 --出埃及记 Exodus 20:4
2016年11月13日 星期日 --出埃及记 Exodus 20:4 "You shall not make for yourself an idol in the form of anyt ...
- 2016年10月13日 星期四 --出埃及记 Exodus 18:24
2016年10月13日 星期四 --出埃及记 Exodus 18:24 Moses listened to his father-in-law and did everything he said.于 ...
随机推荐
- Match function in R
Examples: print(match(5, c(1,2,9,5,3,6,7,4,5)))[1] 4 5 %in% c(1,2,9,5,3,6,7,4,5)[1] TRUE ...
- HIHOcoder 1403 后缀数组一·重复旋律
思路 后缀数组的板子题,注意后缀数组的rank[]数组是通过位置找到对应排名的,sa[]是通过排名找到位置的,height[i]记录的是sa[i]和sa[i+1]之间的lcp 不要写错了就行了 代码 ...
- Set和WeakSet数据结构
学习Set数据结构,注意这里不是数据类型,而是数据结构.它是ES6中新的东西,并且很有用处.Set的数据结构是以数组的形式构建的. Set的声明 let setArr = new Set(['js', ...
- 【Hadoop 分布式部署 四:配置Hadoop 2.x 中主节点(NN和RM)到从节点的SSH无密码登录】
******************* 一定要使这三台机器的用户名相同,安装目录相同 ************* SSH 无密钥登录的简单介绍(之前再搭 ...
- ORM之EF
本文大部分内容截取自博客: http://www.cnblogs.com/VolcanoCloud/p/4475119.html (一) 为什么用ORM 处理关系数据库时,我们依据由行和列组成的表, ...
- 在WPF中调用另存为对话框
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "User ...
- jquery 封装页面之间获取值
最近在项目中发页面传值比较繁琐.View → Control → View,或是Session.Cookie 的 感觉不是很好,于是封装了一个页面间的js方法,上码 $.extend({ reque ...
- SMTP发送邮件
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...
- P1547 Out of Hay
传送门 练习 只是一个最小生成树的水题,拿来练练模板 AC代码: #include<iostream> #include<cstdio> #include<alg ...
- virtualbox中的虚拟机和windows共享文件夹
http://www.jianshu.com/p/4e3c8b06cb06 为什么要共享文件夹? 在工作的过程当中会使用到不同的软件开发环境,php的,python的,nodejs的为了隔离这些应用环 ...