ThinkPHP框架开发

2016-9-4 12:27
请先登录。
#ThinkPHP框架开发# 的任务 task5:视图模板的基本使用 有了新的提交。
1、在Home/news/index.php <table class="article"> <tr> <th>序号</th> <th>标题</th> <th>发布者id</...

#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)其它条件:查看参考手册



#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
注释里面也有相应的代码
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1.   2.
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
  //1.按条件查询  查询           author_id=1  or   cat_id&nbs...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1. 2.1 2.2  2.3 2.4
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1.1查找author_id = 1,或者 cat_id = 2的新闻记录; (2)查找id > 3 并且 id < 10的记录,要求按照发表时间降序排列; (3)查找author_id = 1发表的前5条记录(按照发表时间降序排...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1、核心代码 public function inquire(){ //1、news表创建对象 $newsTable = M('news'); //2、构造查询条件 //2.1 查找author_id ...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1. public function test()     { //(1)查找author_id = 1,或者 cat_id = 2 的新闻记录;         //1.创建news来操作对象   &n...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1 (1) (2) (3) (4) (5) (6) 2(1) ...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1 2 (1) (2) (3) (4)
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
<?php namespace Home\Controller; use Think\Controller\RestController; use Think\Model; class NewsController extends RestController{ ...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
1. 在news表基础上,使用内置模型类(Think\Model)给出下列查询的核心代码截图: (1)查找author_id = 1,或者 cat_id = 2的新闻记录; (2)查找id > 3 并且 id < ...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller{ public function index(){ $this-&...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
//一、 //(1) public function testa(){ $newsTable=M('news'); $condition=array(); $condition['author_id']='1'...
#ThinkPHP框架开发# 的任务 task4:数据库基本操作 有了新的提交。
第一题 第二题