ThinkPHP框架开发
2016-9-4 12:271. 2.引入var-dump,与thinkphp中dump冲突。编辑好测试文件出现命名冲突 Cannot redeclare dump() (previously declared in D:\phpS...
给 #ThinkPHP框架开发# 指派了新任务。
task3:控制器和动作
1. 建立task3应用程序,要求该应用程序为单模块应用程序,同时设置默认模块为Home模块,默认控制器为 Default控制器,默认动作为 index。请给出配置文件核心代码截图。
2. 定义新闻数据表 news,其中id为主键,新闻包括(标题title...
模块、控制器和动作:
1. 模块包括控制器、 视图和模型等部分组成。
2. 控制器的定义:
(1)控制器类文件:控制器名.class.php,位于当前模块的 Controller 目录下。
(2)控制器类:
a. 类名: 控制器名 + Controller
b. 控制器类可以继承 Think\Controller 类
c. 命名空间: namespace 模块名\Controller;
(3)动作方法:一般定义为public类型,非public类型不能被URL访问
3. 模块、控制器和动作相关配置项:自行查看参考手册
-------------------------------------------------
控制器基本操作:
1. 初始化动作:_initialize( ),在控制类中定义 _initialize( )方法,控制器其他动作被调用时,将会初始化该_initialize( )方法;可以在该初始化方法中执行用户校验、数据过滤、权限认证等功能,控制器的每个动作方法都会首先执行初始化方法。
2. 前置和后置动作:(以index动作为例)
(1)前置动作:_before_index(),执行index( )方法之前会首先执行该方法
(2)后置动作:_after_index(),执行index()方法之后会继续执行该方法
3. 获取请求参数:
(1)可以使用 $_GET、$_POST、$_PUT等超全局数组获取请求参数
(2)使用 I()辅助函数获取请求参数
a. I('get.id'):获取GET参数id的值
b. I(‘post.name', 'lisa'):获取POST参数name的值,若无该值,则使用默认值 lisac. I('post.pswd', '', 'md5'):获取POST参数pswd的值,已经使用md5函数加密处理过
d. I('id'):获取id的值,无论是GET请求或POST请求
e. I('get.'):获取$_GET[ ] 超全局数组的值,返回关联数组形式
4. 转发、重定向和跳转
(1)转发和重定向的区别:
a. 转发(forward):浏览器发送请求给服务器(请求test1.php页面),服务器解析请求,发现需要“转发”给test.php页面,服务器直接转发该请求到test2.php页面;浏览器地址栏不变,将加载test2.php页面内容。
b. 重定向(redirect):浏览器发送请求给服务器(请求test1.php页面),服务器要求浏览器重定向该请求到test2.php页面;浏览器再次发送请求到test2.php页面,故浏览器地址栏改变。
c. 区别:转发只发送一次请求,地址栏不变;重定向会发送两次请求,地址栏发生改变。
(2)ThinkPHP中不存在转发机制,所有跳转或重定向操作均属于理论上的“重定向”。
(3)TP中跳转(jump)的实现:借助JavaScript跳转或回退实现
a. $this->success(提示文本, 跳转地址, 跳转倒计时 ):跳转到下一个路由URL地址。
b. $this->error(提示文本):返回到上一页面。
(4)TP中重定向(redirect)的实现:借助PHP内置header( )函数实现
a. $this->redirect(重定向路由地址, 传递的参数, 重定向倒计时, 提示文本):重定向路由地址,需要遵循 URL路由规则定义给出。
b. redirect(重定向URL, 重定向倒计时, 提示文本):重定向URL,即为URL形式(模块/控制器/动作)。
(5)TP中跳转和重定向的区别:跳转会产生倒计时效果,而重定向没有。
5. 显示视图:
(1)显示当前动作所对应的视图文件:$this->display( );
a. 当前动作对应的视图文件路径:当前模块/View/当前控制器/当前动作 . html 。
b. 视图文件的扩展名,可以通过配置项 'TMPL_TEMPLATE_SUFFIX' 来设置(默认为 .html)。
(2)显示其它视图文件:
a. 当前控制器下其它视图:$this->display('add');,当前模块下,当前控制器,add动作所对应的默认视图。
b. 其它控制器下的视图:$this->display('home/view');,当前模块下,Home模块下,view动作所对应的默认视图。
c. 其它模块下视图:$this->display('admin@home/view');,Admin模块下,Home模块下,view动作所对应的默认视图。
(3)为视图变量赋值:
a. $this->assign( 键, 值):设置视图
b. $this->键 = 值
6. 请求类型的判断:
(1)IS_GET、IS_POST、IS_PUT、IS_DELETE、IS_AJAX:判断当前请求类型是否为GET/POST/PUT/DELETE或Ajax请求;若成立,即返回true。
(2)REQUEST_METHOD:获取当前提交的请求类型。
7. Ajax返回:$this->ajaxReturn( )方法,支持JSON、JSONP、XML和EVAL四种方式给客户端传输数据。
8. 伪静态支持:在URL后添加 .html 后缀,通过配置项 'URL_HTML_SUFFIX' 设置后缀名。
9. 路由函数:U(),生成的URL自动包含 伪静态后缀。
1.项目目录截图 2.代码和运行效果
第二问应当使用自动加载机制。
1、目录截图: 2、
1. 2.代码部分: 显示部分:
1.Application目录 2核心代码。 在index.php中引入autoload,放在thinkphp引入之前,显示冲突,放在之后不起作用。 在控制器文件中引入,显示引用dump();
包括Index模块、Admin模块和自带Home模块,每个模块下分别有一个控制器类IndexController 引入composer 因存在命名冲突,使用Ctrl定位到thinkphp dump函数处,改名,可解决此问题
1: 2:
1 2因为命名冲突,所以只需要将ThinkPHP或者引入symfony/var-dumper 类库时下载的vendor中的任何一个dump方法改一下名字就好了
http://10.7.1.98/201401guofeixuan/tp-work/task2/
2.控制器中: composer.json中添加 "autoload":{ "psr-4":{ "Admin\\":"application" } } 效果:
1、 2、采用自动加载tp中类库和composer的的类库
第二个当引入symfony之后composer。json里面就添加了相关信息,输入时我选了use 然后测试可以正常使用,应该是选择内置还是symfony,另外感觉应该可以去模块的conf进行设置
1.direction 2.
任务一截图如下: 任务二完成如下: 自动加载语句 命令语句: .json 最终效果: 任务三完成如下: 命令: ...
tesk1a 98服务器上没有实现。 task1b task1c http://10.7.1.98/201407wangzhenru/task1c/
task1a task1b http://http://10.7.1.98/201403wushilin/thinkphp/task1b/ task1c http://http://10.7.1.98/201403wushilin/thi...
task1a task1b和task1c http://10.7.1.98/201404wangtianlei/task-1/task1b/
http://10.7.1.98/201407sunxinle/thinkphp/task1/task1a/ http://10.7.1.98/201407sunxinle/thinkphp/task1/task1b/ http://10.7.1.98/20...
给 #ThinkPHP框架开发# 指派了新任务。
task2:ThinkPHP的基本使用
1. 建立应用程序task2,包括两个模块(Index模块和Admin模块),每个模块下分别有一个控制器类IndexController,给出项目目录结构截图(只需要Application目录截图即可)。
2. 在应用程序task2的基础上,使用Compo...
http://10.7.1.98/201408baizhaoyun/20160906task1/task1b/ http://10.7.1.98/201408baizhaoyun/20160906task1/task1c/