位置: 编程技术 - 正文

ThinkPHP控制器详解(thinkphp5控制器)

编辑:rootadmin

推荐整理分享ThinkPHP控制器详解(thinkphp5控制器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp5控制器访问原理,thinkphp controller,thinkphp 控制器,thinkphp调用控制器中的方法,thinkphp5控制器访问原理,thinkphp调用控制器中的方法,thinkphp5控制器访问原理,thinkphp5控制器访问原理,内容如对您有帮助,希望把文章链接给更多的朋友!

在上一课程中,你可能会对ThinkPHP的路由会有一丝丝疑惑,不过没关系,学完本课程,很多事都会豁然开朗。

控制器文件命名遵守IndexController.class.php的方式

控制器的定义

在开始之前,我们还是需要明确一下控制器的定义:

如所见,前面在路由篇提到的控制器就是这么定义的:

使用相应的命名空间,默认是namespace HomeController加载ThinkController新建控制器继承于Controller(或子类)采用驼峰命名法,注意首字母大写控制器内的公共方法可以看作一个操作,比如上面的read()和top()方法就可以看作操作,我们在路由篇的时候都验证过了。

page ,再次明确Home代表的是Home模块

有时候可能会遇到有和系统的关键字冲突的方法,这时候就可以使用设置操作方法后缀来解决了,具体请看官方文档: 有可能不会再执行后置方法了。例如,如果在当前操作里面调用了系统Action的error方法,那么将不会再执行后置操作,但是不影响success方法的后置方法执行

可以用于表单的过滤和验证

参数绑定

参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,可以简化方法的定义甚至路由的解析。

参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块、控制器和操作名)和操作方法中的参数进行绑定。参数绑定有两种方式:按照变量名绑定和按照变量顺序绑定,默认使用的是按照变量名绑定,比如看下面的例子:

对,这个就是上一篇路由所涉及的内容,在之前路由的路由设置处

'blogs/:id' => array('Index/read')我们将:id直接映射给read()方法的参数$id,所以现在回头再看,其实路由规则就是给了你一个自定义URL的功能。如果去掉上面的路由设置,我们正确的访问方式是:

page with0

tips:给绑定参数设置默认值是一个避免报错的好办法在实际的开发中,我们其实会见到没有显示变量名这样的URL,如:

=> 'html|shtml|xml'

如果此项设置留空则表示可以支持所有的静态后缀。

也可以设置禁止访问的URL后缀通过URL_DENY_SUFFIX来设置,例如:

'URL_DENY_SUFFIX' => 'pdf|ico|png|gif|jpg',注: URL_DENY_SUFFIX的优先级比URL_HTML_SUFFIX要高。

URL生成

为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。

定义规则

U方法的定义规则如下(方括号内参数根据实际应用决定):U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

地址表达式

ThinkPHP控制器详解(thinkphp5控制器)

地址表达式的格式定义如下:

[模块/控制器/操作#锚点@域名]&#;参数1=值1&参数2=值2...如果不定义模块的话 就表示当前模块名称,下面是一些简单的例子:

U('User/add') // 生成User控制器的add操作的URL地址U('Article/read&#;id=1') // 生成Article控制器的read操作 并且id为1的URL地址U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址

参数

U方法的第二个参数支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,例如:

三种方式是等效的,都是生成Article控制器的cate()操作 并且cate_id为1 status为1的URL地址

但是不允许使用下面的定义方式来传参数:

生成路由地址

U方法还可以支持路由,如果我们定义了一个路由规则为:

那么可以使用

最终生成的URL地址是:

user done!了,下面详细来说说这两个重定向方法。

success()和error()方法的第一个参数表示提示信息,第二个参数表示跳转地址,第三个参数是跳转时间(单位为秒),例如:

如果不设置跳转时间,默认的等待时间success()方法是1秒,error()方法是3秒。看到上面的两个跳转地址前面都带上了/Home,如果你想简写为/Article/index,你需要在ThinkPHP的入口文件(项目目录下的index.php)中加上下面一行:

而且这两个方法都有对应的模板,默认的设置是两个方法对应的模板都是:

'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',

'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',你可以根据自己的需要来修改模版。

重定向

Controller类的redirect()方法可以实现页面的重定向功能。redirect()方法的参数用法和U函数的用法一致(参考上一部分URL生成部分),例如:

$this->redirect('/Home/Article/show', array('id' => 2), 3, 'Redirecting...');上面的用法是停留3秒后跳转到Article控制器的show()操作,并且显示页面跳转中字样Redirecting...,重定向后会改变当前的URL地址。

为了成功进行测试,我们在IndexController下添加redirectToArticle()方法并写上上面那行代码:

然后我们创建一个ArticleController,并且为他添加show()方法:

然后在浏览器访问: 'Redirecting...',3);

注:控制器的redirect()方法和redirect()函数的区别在于前者是用URL规则定义跳转地址,后者是一个纯粹的URL地址注:好像官方文档是这样写的

$this->redirect('/New/category/cate_id/2', 5, '页面跳转中...');

以上所述就是本文的全部内容了,希望大家能够喜欢。

ThinkPHP模型详解 模型定义,默认情况下,ThinkPHP的模型类是位于/Home/Model/目录之下,模型类通常需要继承系统的ThinkModel类或其子类,下面是一个HomeModelUserModel类的定

php实现向javascript传递数组的方法 本文实例讲述了php实现向javascript传递数组的方法。分享给大家供大家参考。具体如下:这里介绍的PHP进行数组传值给javascript的技巧,此方法适用php5.2以

在Mac上编译安装PHP7的开发环境 今天看到鸟哥发微博说php7beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧。。。首先你

标签: thinkphp5控制器

本文链接地址:https://www.jiuchutong.com/biancheng/275638.html 转载请保留说明!

上一篇:ThinkPHP路由详解(thinkphp 路由)

下一篇:ThinkPHP模型详解(thinkphp 模型)

  • 什么叫风险纳税人员
  • 酒店摆放物品是什么
  • 纳税收入包含哪些
  • 工业总产值收入法
  • 什么是未投入使用的固定资产
  • 电子发票冲红是怎么回事
  • 无形资产使用费计入什么科目
  • 风险溢价包括哪些违约风险溢价 流动性风险溢价
  • 营改增后预交营业税怎么处理
  • 个人去税务局开劳务票 税点是多少
  • 不应计入税金及附加的有哪些
  • 免交的增值税计入什么科目
  • 幼儿园收的保教费是什么费
  • 做内账收入含税吗
  • 权益法核算的投资收益要做递延所得税吗
  • windows 10鼠标如何操作
  • u盘文件全都变成快捷方式怎么办
  • macbook视频怎么用
  • quicklylook
  • kb4592438安装失败
  • php数组函数输出《咏雪》里有多少"片"字
  • 对于企业已经入账而银行尚未入账
  • 外籍人员工资薪金扣除
  • php用法
  • php十进制转二进制算法
  • thinkphp 模块
  • 填报的资产总额在季初和季末存在差异是什么意思
  • 数学建模 比赛
  • 交通银行手机银行网页版
  • set nu命令
  • 注册新公司怎么办理
  • 银行代发工资当天改工资卡来得及吗
  • 车船税每年都要付吗
  • 总公司如何成立子公司
  • 代理返点怎么算
  • 如果已经结帐,发现凭证有误,应该如何处理
  • php 队列
  • 在mysql中创建数据库和表作业
  • 原始凭证如何粘贴在记账凭证正确粘法图解
  • 代发工资需要缴税吗
  • 出口运保费是什么费用
  • 研发支出如何做账
  • 发票不按实际数量单价开 但金额一致
  • 行政事业单位的营业执照叫什么
  • 同一个客户有应收也有应付怎么办
  • 质量问题举例
  • 应付职工薪酬为负数什么意思
  • 注册工贸公司业务范围
  • sql差异备份数据库怎么还原
  • xp禁用win键
  • 卸载微信后重新登录微信怎么恢复之前的数据
  • 如何重设路由器密码怎么办
  • win7系统修改
  • WIN10如何设置电脑自动锁屏
  • 硬盘安装xp系统安装教程
  • win10预览版选哪个
  • win7一键共享软件
  • msoobe.exe是什么
  • win7屏幕颜色变了怎么恢复
  • Linux VPS vsftp/proftpd FTP时间差八小时的解决方法
  • win7中Windows Time时间服务错误1060怎么办?
  • windows 8开机
  • JavaScript的Ext JS框架中的GridPanel组件使用指南
  • javascript definitive guide
  • shell 字符串trim
  • unity3d入门教程中文图解
  • Build Qt5.3.1 for Freescale I.MX6Q based Linux 3.0.15
  • angularjs阻止冒泡
  • shell脚本中执行命令语句
  • 编写批处理运行程序
  • 安卓优化清理大师怎么样
  • js校验姓名
  • 通过jquery实现页面的动画效果(实例代码)
  • 安卓监听文件读写
  • 苏州税务ukey客服电话
  • 钢材出口关税税率是多少
  • 一年内在两家公司任职个税汇算清缴
  • 福建省国家税务局通用定额发票
  • ecco made in china
  • 地方税务局几点下班
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设