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 ...
随机推荐
- 强调语气<strong>和<em>标签,文字设置单独样式<span>
区别:1,<em> 表示强调,<strong> 表示更强烈的强调. 2,并且在浏览器中<em> 默认用斜体表示,<strong> 用粗体表示. 3,两个 ...
- [LeetCode]题解(python):050-Pow(x, n)
题目来源 https://leetcode.com/problems/powx-n/ Implement pow(x, n). 题意分析 Input: x,n Output:pow(x,n) Cond ...
- JS控制flash的播放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- Insecure world writable dir /usr/local in PATH, mode 040777
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin14/rbconfi ...
- thinkphp 加载静态框架frameset frame 浏览器显示空白
我觉得静态框架这个东西非常奇怪,可能是因为没有研究透它. 我的情况是这样的,我之前做过的一个面向对象没有基于thinkPHP,的项目中用同一套后台静态框架没有问题,但用thinkphp后台的index ...
- iOS 冒泡排序
//冒泡排序 -(NSArray*)Bubble_Sort:(NSArray*)oldArray { NSMutableArray * newArray = [NSMutableArray array ...
- Python-S13作业-day1-之登陆程序
Python-S13-day1 需求: 1.让用户输入账号密码,账号密码正确,登陆程序,打印欢迎信息: 2.如果账号,或密码输入错误,提示用户重新输入,用户有三次机会: 3.如果用户第三次输入的账号或 ...
- 11种dialogBox样式打包开源,逐一详解
期待已久,APICloud官方总算把各种提示样式给封装了,再也不用苦逼的自己各种被虐着封装自定义样式了.这个分享我把 dialogBox 模块的 11 个样式分别实现个简单的效果,其中将 alert ...
- nginx + keepalived 双机热备
序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP—— ...
- 无法定位程序输入点 crtis tailoredApp 于动态链接库MSVCR110.dll
最近 在安装完 PHP开发,集成环境 WAMP 后,运行老是提示 “无法定位程序输入点 crtis tailoredApp 于动态链接库MSVCR110.dll” 网上百度,大多说是重新下载“ ...