ThinkPHP框架开发
2016-9-4 12:271、在Home/news/index.php <table class="article"> <tr> <th>序号</th> <th>标题</th> <th>发布者id</...
1. 2.
给 #ThinkPHP框架开发# 指派了新任务。
task5:视图模板的基本使用
1. 已知控制器从数据库中获取的新闻记录数据是二维数组形式,通过$this->assign( 'newss', 二维数组); 赋值给视图变量,请编写视图核心代码循环输出该二维数组到表格中,表格表头信息如下图所示。其中:“序号”为从1开始的编号(注意,不是id值)...
视图模板部分课堂笔记
-----------------------------------------------------
视图文件与控制器动作:
1. 视图文件路径:当前模块/view/控制器名/动作名.html
2. 视图文件配置选项:
(1)'TMPL_TEMPLATE_SUFFIX' => '.html', // 默认模板文件后缀
(2)'TMPL_L_DELIM' => '{', // 模板引擎普通标签开始标记
'TMPL_R_DELIM' => '}', // 模板引擎普通标签结束标记
(3)'TMPL_LAYOUT_ITEM' => '{__CONTENT__}', // 布局模板的内容替换标识
'LAYOUT_ON' => true, // 是否启用布局
'LAYOUT_NAME' => 'layout', // 当前布局名称 默认为layout
3. 控制器中显示视图文件的方法:
(1)$this->display( ):加载默认视图文件
(2)$this->show( ):输出文本字符串
(3)$this->fetch( ):获取并返回模板的内容(不输出)
4. T()函数:返回模板的地址
(1)模块/控制器/动作 语法规则:T('模块@控制器/动作)
(2)使用T()函数:$this->display( T('admin@index/view') ); ,显示Admin模块Index控制器Index动作所对应的视图文件
-----------------------------------------------------------
视图基本使用方法:
1. 控制器中为视图文件赋值:
(1)$this->assign( )方法:
a. 普通变量:$this->assign('name', '张三');
b. 数组变量:$this->assign('user', array('name' => '张三', 'age' => 18));
c. 二维数组变量:$this->assign('users', array( array(), array() );
(2)魔术方法形式:$this->name = '张三';
2. 视图文件中输出变量值:
(1)输出普通变量:name: {$name}
(2)输出数组元素:name: {$user.name} 或 name: {$user['name']}
3. 输出系统变量和常量:
(1)输出系统变量:
a. session变量:{$Think.session.name}
b. get参数:{$Think.get.id}
(2)输出系统常量:
a. 当前模块名称:{$Think.MODULE_NAME}
b. 当前控制器名称:{$Think.CONTROLLER_NAME}
c. 当前动作名称:{$Think.ACTION_NAME}
(3)输出配置文件中的配置项:{$Think.config.DB_HOST}
(4)输出语言变量:{$Think.lang.previous}
4. 指定默认值输出:{$name|default="默认值"}
5. 输出变量时使用函数过滤:
(1)无参函数:{$pswd|md5}
(2)有参函数:
a. 当前变量为第1个参数:同无参函数的使用,或使用 ### 表示当前变量;{$pswd|md5}、{$pswd|md5=###}、{title|substr=###, 0, 3}
b. 当前变量不是第1个参数:{addtime|date='Y-m-d', ###}
(3)同时使用多个函数:
a. 基本形式:{$pswd|md5|ucfirst},相当于 ucfirst(md5($pswd))
b. 改写形式:{:ucfirst(md5($pswd))}
6. 几个目录路径:
(1)__ROOT__: 会替换成当前网站的地址(不含域名)
(2) __APP__: 会替换成当前应用的URL地址 (不含域名)
(3)__MODULE__:会替换成当前模块的URL地址 (不含域名)
(4)__CONTROLLER__(__或者__URL__ 兼容考虑): 会替换成当前控制器的URL地址(不含域名)
(5)__ACTION__:会替换成当前操作的URL地址 (不含域名)
(6)__SELF__: 会替换成当前的页面URL
(7)__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/
------------------------------------------------------------------------------------------------------------------
Layout二步视图:
1. 工作原理:首先解析Layout文件,当遇到 占们符(__CONTENT__)时,自动替换为当前动作所对应的视图文件
2. 配置项:
'TMPL_LAYOUT_ITEM' => '{__CONTENT__}', // 布局模板的内容替换标识
'LAYOUT_ON' => true, // 是否启用布局
'LAYOUT_NAME' => 'layout', // 当前布局名称 默认为layout
数据库基本操作部分课堂笔记
----------------------------------------------------------------
数据库操作基本流程:
1. 在配置文件中配置数据库连接信息
(1)一般只需要在 Application/Common/Conf/config.php 文件中进行数据库配置
(2)模块目录下的配置文件,一般不需要包含内容,除非有特殊需要(例如,当前模块要连接其它数据库,这种情况才需要在当前模块配置文件下写入内容)
2. 在控制器动作方法中,创建数据库操作对象
(1)直接使用内置Model类:$db = new Think\Model( );
(2)使用M()辅助函数:$db = M( );
(3)在创建数据库操作对象时,可以传入参数。若传入参数(数据表名),表示该数据库操作仅对当前数据表有效;若不传入参数,则在使用ORM方式操作数据库时,需要显式调用 table( )方法,指明待操作的数据表名称。
3. 操作数据库:
(1)原生SQL查询:query( )方法执行select查询语句,返回结果集的二维数组形式;excute( )方法执行insert、update、delete语句,返回SQL语句的执行状态(若操作成功,返回主键字段值或影响的结果集个数;若操作失败,返回false)。
(2)ORM方式执行CURD操作
(3)查询最后一条SQL语句:getLastSql( )方法,返回上一条SQL语句,用于查找SQL错误。
---------------------------------------------------------------
ORM方式执行CURD操作:
1. 查询操作:
(1)select( )方法:返回(指定条件)结果集的二维数组形式
a. 若不传入参数:返回当前数据表中的所有记录
b. 若传入字符串(id值组成):表示获取当前id值对应的所有记录
c. 可以在select( )获取记录之前,给出查询条件(具体查询条件查看后续内容)
(2)find( )方法:返回(指定条件)结果集的关联数组形式(一条记录)
a. 若不传入参数:返回当前表中的第1条记录
b. 若传入数字参数:表示返回当前主键id对应的记录信息
c. 可以在find( )获取记录之前,给出查询条件
(3)getField( )方法:获取某个(些)字段的值
(4)动态查询:通过数据表中的字段名查询记录,返回结果为二维数组形式
a. 通过主键id查询:$db->getById( )
b. 通过字段name查询:$db->getByName( )
2. 创建并插入数据:
(1)获得POST表单数据:$data = I('post.')
(2)使用create( )创建待插入数据:$data = $db->create( ); ,默认会从 POST 表单中获取数据
(3)直接创建数据:$data = array( );
(4)写入数据到数据库中:$db->add($data);,若插入操作成功,返回新插入记录的主键id值;若插入失败,返回false
(5)插入多条数据:$db->addAll( 二维数组记录 );
3. 修改数据:
(1)准备待更新的数据记录:$data = I('post.');,待更新的数据需要提供主键id字段,可以借助表单的隐藏域传递参数
(2)更新数据:$db->save( $data );,此形式需要$data数组包含数据表主键id字段,否则更新失败
(3)可以在更新数据save之前,给出更新条件where
4. 删除数据:
(1)按照主键字段删除数据:$db->delete( 主键值 );
(2)指定条件删除数据:$db->where( 删除条件 )->delete( )
(3)删除所有记录:$db->where(1)->delete();
5. 构造条件(查询、更新、删除):
(1) 原生SQL条件:$db->where(' id > 3')
(2)构造ORM方式条件:$condition = array( );
a. 相同关系:$condition['name'] = '张三';
b. 其它比较关系:
$condition['name'] = array('neq', '张三');
$condition['id'] = array('gt', 3);
$condition['id'] = array('betwwen', '1, 8');
$condition['name'] = array('like', '%PHP%');
c. 不同字段之间的逻辑关系(并且、或者):$condition['_login'] = "and";
6. 链式查询:
(1)limit:限制查询个数,$db->where( )->limit(3)->select( );
(2)order:限制查询结果集的排序方式,$db->where( )->order('time desc, name asc')->select( );
(3)其它条件:查看参考手册
注释里面也有相应的代码
1. 2.
//1.按条件查询 查询 author_id=1 or cat_id&nbs...
1. 2.1 2.2 2.3 2.4
1. 2.
1.1查找author_id = 1,或者 cat_id = 2的新闻记录; (2)查找id > 3 并且 id < 10的记录,要求按照发表时间降序排列; (3)查找author_id = 1发表的前5条记录(按照发表时间降序排...
1、核心代码 public function inquire(){ //1、news表创建对象 $newsTable = M('news'); //2、构造查询条件 //2.1 查找author_id ...
1. public function test() { //(1)查找author_id = 1,或者 cat_id = 2 的新闻记录; //1.创建news来操作对象 &n...
1 (1) (2) (3) (4) (5) (6) 2(1) ...
1 2 (1) (2) (3) (4)
<?php namespace Home\Controller; use Think\Controller\RestController; use Think\Model; class NewsController extends RestController{ ...
1. 在news表基础上,使用内置模型类(Think\Model)给出下列查询的核心代码截图: (1)查找author_id = 1,或者 cat_id = 2的新闻记录; (2)查找id > 3 并且 id < ...
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller{ public function index(){ $this-&...
//一、 //(1) public function testa(){ $newsTable=M('news'); $condition=array(); $condition['author_id']='1'...
第一题 第二题