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 ...
随机推荐
- jQuery插件之Wookmark瀑布流
使用方法: 1.下载wookmark.js 2.构建html <div class="wrapper"> <div id="con1_1"&g ...
- Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?
问题:我有个 Linux 进程运行在多核处理器系统上.怎样才能找出哪个 CPU 内核正在运行该进程? 当你在 多核 NUMA 处理器上运 行需要较高性能的 HPC(高性能计算)程序或非常消耗网络资源的 ...
- [LeetCode]题解(python):039-Combination Sum
题目来源 https://leetcode.com/problems/combination-sum/ Given a set of candidate numbers (C) and a targe ...
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
上篇文章中概述了 Ant windows 环境的基本配置,此文讲述在初次使用的过程中遇到的问题. 今天通过 ant 执行 TestNG 测试用例时,执行报错,相应的错误信息如下所示: Buildfil ...
- JavaScript实现dropdownlist选定值后将选定值的key与value填入两个textbox中
<script language="javascript" type="text/javascript"> var txtText0 = " ...
- imx6 otg host support
本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://communi ...
- python chr() unichr() ord()
了解一下python chr(),unichr(),ord()函数的用法. 参考链接: http://crazier9527.iteye.com/blog/411001 chr() 输入参数(取值范围 ...
- 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
private static int fun(int m) { ; ; i <= m; i++) { == ) temp = temp + i; else temp = temp - i; } ...
- 【FastJSON】解决FastJson中“$ref 循环引用”的问题
0.开发环境 SSH,EasyUI,MySQL 1.需求要求: (1)首先获取所有的贷款订单数据,即List <LoanOrder>. (2)然后从单个贷款订单实体LoanOrder去访问 ...
- 给你完美浪漫的七夕,APICloud送你双人电影票!
我一直觉得“幸福的感觉” 就像存款 留着以后用 会幸福感爆棚 于是,我一直习惯于等等,再等等 以为那样就会很幸福 直到有一天,突然发现,在我构想的未来中,总是有你 世界那么大,我只在乎你 世界那么长, ...