15个新型的JavaScript库来进步你的Web体验,ThinkPHP学习笔记1

—復苏内容先河—

多年来相比绕有趣味地上学PHP,看完了一部分基础语法、学会了使用SMARY模版,继而看了ThinkPHP框架,

前言
TP的手册格外多,其实不必再出那样的贴子,论技术,我也是菜鸟一个,同时也在攻读当中。
看样子论坛上多了不少新情人,不少在抱怨手册看不懂,那我就姑且投砾引珠,尝试与新情人们更简单地、手把手地进入TP的应用中去。讲解进度中有错的地点,我们帮衬指正。

此框架的有力超出自己的竟然,它的ROR真是强,还有内置的CRUD,比JAVA的框架更智能。

以此体系,初始定下的目的为,从零初步,以TP示例中央中的Form为例举行讲解,以举行为主,理论为辅,
将TP的最中央内容逛一回,至少让我们一同学会怎么着开展最简便的对数码进行查、增、改、删操作并出口到模板。

福利回想性的上学转发了有的之下小说

由于我们说的是安份守己,所以我用步骤式来验证,只要一步一步跟着做,相信聪明的您在选择进度中就会掌握TP的施用了。

CURD知识之一 C 创造(create)

留意:以下的步调,仅仅是TP灵活的安排形式之中一种,实际支付中得以根据自己的情状去重新设定。
至于缘何那么做,我们会在终极再作统计,我认为先实操然后再进行验证比较便于明白。以下不再另行解释。

名词解析:
1  CURD:表示数据库三个基本操作:创制:create,更新:update,读取:read,删除:delete

============================================

2  模型对象:即数据对象,你项目里每一个Model类文件都会对应着一个数据表(或者视图),模型与数量表存在一种炫耀关系。TP约定了命名要根据一定的正式,假使不适合,则必要基于气象展开额外的应和设置。例如Model类的tableName属性

一  神速初始一个门类

在第四节时,曾略为涉及Model类文件命名,现在再回看一下那部分的情节:
俺们事先在数据库中,已成立了一个think_form数据库表,并且在配置文件config.php中,我们定义了数据表的前缀是think_,
模型类(Model)文件的命名规则是:

名词解释:

不包蕴前缀的数据库表表名还要首字母大写+Model.class.php

种类:你要开销的连串,称之为项目。

故而后边大家为think_form数据表在Myapp/Lib/Model目录下树立一个文本FormModel.class.php

进口文件:你可以精晓为那一个类其余绝无仅有一道门,将来所有的操作都会通过那道门去履行拍卖。
无须理会什么看头,你甚至足以先把它作为是index.php就是进口文件

模型类的例外命名还足以智能识别驼峰式的表命名,即使大家有个是接近think_new_table那样的表
可以命名为NewTableModel.class.php。默许配置便得以智能识别自动对应think_new_table表,由此不要修改配置。

TP: ThinkPHP框架的简称

付出进度中,只要不难地定义好与数据表对应的模型类(xxxModel.class.php),就可以开展对数据操作了。
什么样让这些模型支撑电动验证,自动填充,自动过滤这几个文化,在底下涉及到时会作相应讲解。

1 下载TP1.5正式版

貌似的话,在表中添加多少都是透过表单来树立,为了更直观地上学CURD中的C,大家接下去建立个表单来进展添加数据的操作。
事先大家已在Myapp/Lib/Model/下建立好FormModel.class.php类—-模型(M)
再者也在Myapp/Lib/Action/下添加了一个Index应用模块和写下了一个index操作—-控制器(C)
同时在Tpl目录下创制了与之对应的模版目录Index及index.html模板文件 ——-视图(V)
MVC形式的付出已浮现了出来。
tdweb曾简要地包蕴了TP中那三者的关联,

2 拟好您的项目名称,我们那里以 Myapp 为项目名称

C的法力,就是从M中取得数据到V,

3 在www根目录下,将TP框架所有文件全体复制过去,文件夹名称是ThinkPHP

动用TP以表单提交数据到库,流程和您所精通的表单提交没有啥样界别,只是TP简化了多少操作的处理进度。
咱俩在实际操作中体味一下。
先来看望我们所定义的数码表form的字段:

4 与ThinkPHP同级新建一个文书夹,起名为 Myapp,也就是项目名称

  1. ‘id’,//自动编号
  2. ‘title’,//标题
  3. ‘content’,//内容
  4. ‘create_time’,//创造时间
  5. ‘update_time’//更新时间
  6. ’email’,//邮箱
  7. ‘status’,//状态

5 在www根目录下,创立一个PHP文件,起名index.php,那就是进口文件

复制代码

进口文件index.php代码:

其中的create_time字段是为着记录数据插入的时间,大家可以使用TP的数据自动填充来处理。

  1. <?php
  2.     // 定义ThinkPHP路径
  3.     define(‘THINK_PATH’,’./ThinkPHP’);
  4.     // 定义项目名称
  5.     define(‘APP_NAME’,’Myapp’);
  6.     // 定义项目路线
  7.     define(‘APP_PATH’,’./Myapp’);
  8.     // 加载入口文件
  9.     require(THINK_PATH.’/ThinkPHP.php’);
    1.     // 实例化那个种类
    1.     $App = new App();
    1.     // 执行初阶化
    1.     $App->run();
  10. ?>

在Model类定义 $_auto
属性,能够做到数据自动处理效果,用来拍卖默许值和任何 onclick=”tagshow(event)”>系统写入字段。
只顾1:该机动填写可能会覆盖表单提交项目。其目标是为了防患表单不合法提交字段。
留神2:要动用Model类的create方法创制数量对象的时候才会自动举行表单数据处理。

复制代码

1 打开Myapp/Lib/Model/FormModel.class.php文件,更改代码为

就那样简单几行,然后打开浏览器,输入http://127.0.0.1/
一个TP项目就那样创设出来了。你会见到

  1. <?php
  2. class FormModel extends Model {
  3. // 自动填写设置
  4. protected $_auto  =  array(
  5.   array(‘status’,’1′,’ADD’),
  6.         array(‘create_time’,’time’,’ADD’,’function’),
  7. );
  8. }
  9. ?>
  1. ^_^ Hello,欢迎使用ThinkPHP!

代码知识要点:
Model类的$_auto属性由多少个填充因子组成的数组,填充因子定义格式:

复制代码

array(填充字段,填充内容,填充条件,附加规则)

那行字。并机关为你创立好项目标目录。接下来,我们以此类型添砖加瓦。

填充字段:就是急需展开拍卖的表单字段,这么些字段并不一定假设数据库表中的字段,对于表单内的声援检测字段比如重复密码和验证码也足以拍卖。
填充条件:ADD | UPDATE | ALL(注意,此是1.5本子表达,1.6已改为1 2
3,后续教程有认证)
当为ADD时,会在疯长多少时自动填充,那是默认的处理方式
当为UPDATE时,在更新数据的时候会自行填写
当为ALL时,所有情形下都会进展活动填写

=============================================

叠加规则:叠加规则是针对填充内容而言,表示该内容填充的不二法门,包罗function,callback,field,string
对此field使用此外字段举办填写和string直接标示字符串作为值举行填空很好明白。例如地点

二简易认识项目里的顺序文件夹

  1. array(‘status’,’1′,’ADD’),

名词解释:

复制代码

Action:模块控制器类,你暂时可以知晓为一个Action文件表示着一个选择模块,Action文件中的每一个艺术(function)代表着一个操作,操作分为有出口到模板的操作和只具执行不需求输出的操作。对于有出口的操作,则象征了你的品类中一个浮现给用户选择的web页面。(注意:那不是正统的术语解释)

就是将状态status字段的值直接以1填充.

Model:数据表相对应的Model类,可以驾驭为一个Model文件对应着您项目数据库的内部一个表。命名关系请参见那里:http://thinkphp.cn/Article/10

上边主要说说function与callback那三个叠加规则。

在添砖加瓦从前,大家有须求认识一下相继文件夹的用途。

  1. protected $_auto  =  array(
  2. array(‘create_time’,’time’,’ADD’,’function’),
  3. );

打开Myapp文件夹,里面TP已让你很便利地创设了最主旨的目录。其中:

上面create_time代表了要拍卖的字段,填充内容是time,附加规则是function使用函数,填充条件是ADD新增时处理,那么整行代码表示对create_time字段在新增的时候使time函数作为该字段的值举行机动填写。
再看一个function作为附加规则的例子

Cache文件夹:项目自动生成的模板缓存会油但是生在那里

  1. protected $_auto  =  array(
  2. array(‘password’,’md5′,’ADD’,’function’),
  3. );

Common文件夹:你的品种中要用到的亲善写的函数,可以在这些文件夹下创制一个名为common.php文件,
在那些文件中书写函数,那个函数可以用在您项目标逐条类,同时也足以在模板变量中使用,TP框架会自动加载。

当使用function作为附加规则时,第一个填充内容就意味着了那个因子是一个函数名称,该函数的参数就是意味着填充字段的值,比如password的值是123456,则上边的代码会先将这些值使用函数md5(‘123456’),那样处理后再插入到数据表中去。
对于function(函数)和callback(回调方法)理论是同样的,只可是一个是意味着填充内容所写的是函数名,另一个是意味填充内容是类中的方法名。函数可以是PHP5内置函数或你自己所写的函数。而callback是眼下模型类所能调用的一个方法。 关于数据填充方面的详细资料,请参见官方使用手册
《ThinkPHP数据操作指南》

Conf文件夹:项目标运作配置文件config.php将位于这些文件夹里,(还有路由配置,调试配置等,请先忽略)

2 打开Myapp/Tpl/default/Index/index.html文件,大家修改代码将form写进去

Data文件夹:TP会把项目标数据库表字段生成到此地,别的。。。那么些先不要理会。

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0
    Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$title}</title>
  5. </head>
  6. <body>
  7. <form action=”__URL__/add” method=”post” name=”formname”
    id=”formname”>
  8.     <p>
  9.            <label for=”title”>标题:</label>
  10.            <input name=”title” type=”text” id=”title” />
  11.     </p>
  12.     <p>
  13.            <label for=”email”>邮箱:</label>
  14.           <input name=”email” type=”text” id=”email” />
  15.     </p>
  16.     <p><label
    for=”content”>内容:</label></p>
  17.     <p>
  18.         <textarea name=”content” rows=”5″ cols=”25″
    id=”content” ></textarea>
  19.     </p>
  20.     <p><input type=”submit” value=”提交” /></p>
  21. </form>
    </body>
    </html>

Lang文件夹:项目标语言设置目录,先不要理会。

在地点代码中,大家大致地建了一个form表单,并将标题统一行使一个模板变量{$title}。
action提交到的处理地点是__URL__/add,其中__URL__是一个常量定义,表示近来模块地址,TP模板引擎会自行将那句解释为/index.php/Index/add,常见的模板使用的常量有

Lib文件夹:应用类库目录,在那文件夹内还有四个公文夹:Action和Model,Action目录放置命名为xxxAction.class.php的控制器文件,Model目录放置对应数据库表的命名为xxxModel.class.php的类公事。

__ROOT__    网站根目录地址
__APP__         当前项目(入口文件)地址
__URL__         当前模块地址
__ACTION__   当前操作地址
__SELF__       当前 URL 地址

Logs文件夹:项目中活动发出的日记文件会存放在此地。暂不必理会。

3 设置模板变量 {$title} ,增添add操作方法

Temp文件夹:数据缓存目录,存放项目中自动生成的种类运作缓存文件等,以及选用文件措施时的缓存文件等

开拓Myapp/Lib/Action/IndexAction.class.php文件,修改代码如下

Tpl文件夹:模板文件目录,内有一个default文件夹,也就是默认的风骨。
类型变更的目录结构就先简单介绍到那边,下一步大家要不难地对品种展开最基本的布置。

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index() {
  4.        
       $this->assign(‘title’,’添加数据’);//那里安装了模版变量{$title}
  5.            $this->display();
  6.     }
  7.     // 处理表单数据的格局
  8.     function add()  {
  9.           $Form = D(“Form”);
  10.           if($Form->create()) {
  11.                    $Form->add();
  12.                    $this->redirect();
  13.           }else{
  14.                    header(“Content-Type:text/html;
    charset=utf-8”);
  15.                    exit($Form->getError().’ [ <A >返
    回</A> ]’);
  16.          }
  17.     }
  18. }//类定义 end
  19. ?>

三创设数据表,并对品种开展配备,以便连接到数据库。

代码知识要点:
模板变量赋值前边的章节已介绍过。那里就不啰嗦了。

1
我们那边运用的是Mysql数据库,利用PhpMyadmin新建一个数据库,名称为myapp。
选用示例主旨中的sql如下:

大家来看望add方法的代码。
$Form = D(“Form”);
此间运用了TP的表征单字母函数D,是操作数据库时最常用的TP函数,表示实例化Form对象,
即$Form = new FormModel();
D函数的切实代码可以查看ThinkPHP目录内的common/function.php中的片段,
它会活动引入Model类,并认清此前即使实例化过这么些Model,就不再实例化,若然该Model不设有,就会抛出万分错误,别的,D可以跨系列访问Model,暂且忽略。

  1. CREATE TABLE `think_form` (
  2.   `id` smallint(4) unsigned NOT NULL auto_increment,
  3.   `title` varchar(255) NOT NULL,
  4.   `content` varchar(255) NOT NULL,
  5.   `create_time` int(11) unsigned NOT NULL,
  6.   `update_time` int(11) unsigned NOT NULL,
  7.   `status` tinyint(1) unsigned NOT NULL,
  8.   `email` varchar(50) NOT NULL,
  9.   PRIMARY KEY  (`id`)

  10. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

$Form->create()
使用Model类的Create方法创设一个Form对象,败北会回来false。

复制代码

$Form->add(); //add方法会将表单数据开展写入
$this->redirect(); //执行跳转
就这么简单几行代码,便成功了对数据插入的处理。

2
在Conf文件夹内,建立一个config.php文件。这一个文件,就是Myapp项目的配备文件。系统会自行加载
config.php文件中的配置是以数组重回情势开展定义,会覆盖TP框架中的common目录下convention.php的默认配置。没有设置的安插,就以默许为准。配置安装可以动用C函数动态改变,暂且不必理会。
而我们连接受数据库的设置也是在那几个文件中书写。


config.php代码如下:

  1. <?php
  2. if (!defined(‘THINK_PATH’)) exit();
  3. return array(
  4. ‘DB_TYPE’=>’mysql’, // 使用的数据库是mysql
  5. ‘DB_HOST’=>’localhost’,
  6. ‘DB_NAME’=>’myapp’,// 数据库名
  7. ‘DB_USER’=>’root’,
  8. ‘DB_PWD’=>’123456’,// 填写您总是数据库的密码
  9. ‘DB_PORT’=>’3306’,

  10. ‘DB_PREFIX’=>’think_’, // 数据表表名的前缀
    请参见http://thinkphp.cn/Article/10

  11. );

  12. ?>

复制代码

暂时就是那般,前边会再根据要求更为足够和讲课。

3
在Lib/Model目录下,创造一个文书,命名为FormModel.class.php。命名规则刚才您已看了五回。
那边就不再多说,咱们能够看到,数据表名是think_form,由于大家安排了数据表表名的前缀为think_,
从而文件的命名直接使用 “不含前缀的数码表表名+Model.class.php”就行了。
在这么些文件中书写代码:

  1.  
  2. <?php
  3. class FormModel extends Model {
  4. }
  5. ?>

复制代码

就这么定义一个类名就行了。该类继承了Model类。至于自动验证,自动过滤,自动填写那些,暂且不理会。

4 提前先爽一下吧。再一次利用PhpMyAdmin,在该表中插入一些数据
sql如下:

  1. INSERT INTO `think_form` (`id`, `title`, `content`,
    `create_time`, `update_time`, `status`, `email`) VALUES
  2. (1, ‘那是测试数据’, ‘dfdf’, 1212724876, 0, 1, ‘dddd@ddd.com’);

复制代码

然后咱们打开Myapp/Lib/Action/IndexAction.class.php文件,将中间的内容删掉。改成上边这样:

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index(){
  4.         $form = D(‘Form’)->findall();
  5.         dump ( $form );
  6.         exit;
  7.     }
  8. }
  9. ?>

复制代码

开拓浏览器,输入http://127.0.0.1/,看,数据给输出来了。

前天先到那里,下一步大家三番五次稳步前进。让我们一并把那一个Form最后成为一个有会员功效的留言板。

 

 

[教程] 一步一步循规蹈矩学习TP二(新手篇)

 

鉴于岁月涉及,此种类联合学习课程更新的快慢会比较慢些,请多担待,上一章节的始末请看那里。
http://bbs.thinkphp.cn/viewthread.php?tid=4673&extra=page%3D1


PHP开发,无非是对数据库使用了逻辑控制的增删改查和动用模板输出数据内容。
一般说来数据的插入都是透过表单来拓展添加。表单提交涉及到页面突显,
所以这一节我们暂时放下对数据库的操作讲解,先来大约学习一下TP的模板引擎的变量输出。

第二节简单询问TP的模板输出
上一章节大家提及到,

TP中的每一个xxxAction.class.php文件表示着一个采纳模块,此Action中的每一个措施(function)代表着一个操作,操作分为有出口到模板的操作和只具执行不须求输出的操作。

开辟Myapp/Lib/Action/IndexAction.class.php文件,大家看看其中的基础代码

  1. class IndexAction extends Action{
  2.     public function index(){
  3.     }
  4. }

复制代码

理论知识:

1
在TP开发中,要扩充一个使用模块,就在Action文件夹里建立一个类,类的文书命名格式是模块名称+Action.class.php。例如大家这边的选拔模块是Index,所以定义文件名为IndexAction.class.php

2
应用模块类的定义要接二连三框架的Action类。要为这几个利用模块添加一个操作,则定义一个以此操作为命名的function.例如地方的index操作。

平时一个行使模块中,会有若干操作(function)需求有与用户交互的页面,那就须求选择模板输出,
TP本身已放置了一套拥有TP特色的,很强劲易增加但运用尤其方便包简单的模版引擎。

在应该模块中,如若某个操作是内需页面突显的,只要对应在Myapp/Tpl/default/里创制一个文件夹,文件夹以应用模块的称呼来定名,然后在那个文件夹下,建立一个以这些function名称来命名的html文件,就足以在这么些办法中利用$this->display()方法来一向调用该模板。(当然也得以调用其余模块下的此外模板或显式指定模板文件地方和称号,由于是鲁人持竿式的学习,就让我们先忽略吧)

询问那几个理论后,大家先简单实操一下这么些知识。

1
在Myapp/Tpl/default/下建立一个文件夹,依据使用模块的称呼,大家将以此文件夹命名为Index

2
在Myapp/Tpl/default/Index/下树立一个html文件,根据操作名称,大家命名该文件为index.html

3 打开Myapp/Lib/Action/IndexAction.class.php文件,修改代码为

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index(){
  4.         $value  =   ‘hello,ThinkPHP’;
  5.         $this->assign(‘name’,$value);
  6.         $this->display();
  7.     }
  8. }
  9. ?>

复制代码

代码知识要点(摘自手册:ThinkPHP模板指南,此后的学识要点均出自TP官方手册,不再评释)

在Action类里面使用
assign方法对模板变量赋值,无论何种变量类型都合并使用assign赋值。

  1. $this->assign(‘name’,$value);

复制代码

// 上面的写法是一律的

  1. $this->name = $value ;

复制代码

//
模板变量赋值后就必要调用模板文件来输出相关的变量,模板调用通过display方法来促成

  1. $this->display();

复制代码

4 打开Myapp/Tpl/default/Index/index.html文件,代码为

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$name}</title>
  5. </head>
  6. <body>
  7. 测试输出: {$name}
  8. </body>
  9. </html>

复制代码

代码知识要点:
模板变量使用{$变量名称}那种标签举行输出。
不等的沙盘变量类型,使用分裂的竹签,标签可以自动别的定义,暂且不理睬。

5
打开浏览器输入地方:http://127.0.0.1/,我们可以看到,定义的模板变量已经输出来了。
叠加补充知识:
1 即使要同时输出多个模板变量,能够运用上面的点子:

  1. $array = array();
  2. $array[‘name’]    =    ‘thinkphp’;
  3. $array[’email’]   =    ‘liu21st@gmail.com’;
  4. $array[‘phone’]   =    ‘12335678’;
  5. $this->assign($array);

复制代码

这么,就足以在模板文件中并且输出name、email和phone八个变量。
2 大家采用方面的变量定义,将所有数组定义为一个模板变量来输出

  1. $array = array();
  2. $array[‘name’]    =    ‘thinkphp’;
  3. $array[’email’]   =    ‘liu21st@gmail.com’;
  4. $array[‘phone’]   =    ‘12335678’;
  5. $this->assign(‘array’,$array);
  6. $this->display();

复制代码

在html中,要输出$array[‘name’]的值,代码是

  1. {$array.name} 或 {$array[‘name’]}

复制代码

3 将以此数组循环输出

3.1 IndexAction.class.php中代码更改如下

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index(){
  4.         $array = array();
  5.         $array[‘name’]    =    ‘thinkphp’;
  6.         $array[’email’]   =    ‘liu21st@gmail.com’;
  7.         $array[‘phone’]   =    ‘12335678’;
  8.         $value  =   ‘hello,ThinkPHP’;
  9.         $this->assign(‘array’,$array);
    1.         $this->assign(‘name’,$value);
    1.         $this->display();
    1.     }
  10. }

  11. ?>

复制代码

3.2 将Myapp/Tpl/default/Index/index.html代码更改如下:

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$name}</title>
  5. </head>
  6. <body>
  7. <iterate name=”array” id=”vo”>
  8. {$vo}<br />
  9. </iterate>

  10. </body>

  11. </html>

复制代码

代码知识要点:
name=’array’是指要循环的模版变量是array,id=’vo’是指那个数量在模板输出时所利用的名目

对此TP的沙盘引擎输出先简单询问到那边。

 

 

 

 

[教程] 一步一步安分守己学习TP三(新手篇)

 

率先节  快速先河一个品类

第一节 简单认识项目里的逐一文件夹

其三节 配置项目,连接数据库。

首节 简单了然TP的模版输出

第五节开端了然URL如何访问模块操作

透过前边的就学,大家已大体地精晓了选用模块中的操作与模板如何对应。
而这一节将不难讲解怎么样通过URL来访问操作。由于大家要绳趋尺步,所以先只介绍上面章节要用到的知识,要想深切学习还请参考官方手册《URL设计和SEO协理》

TP支持八种URL访问方式,默许是智能情势,所以我们就那种情势举行简要表明。

智能方式下的URL基本结构是如此的
http://servername/appName/moduleName/actionName/params

你可以知道为
http:// 服务器地址 / 入口文件地方 / 应用模块名称 /具体操作名称/ GET变量参数

解释一下下边文字中所译的URL结构,
何以appname项目名称我将它译成了进口文件地方:日常状态下,大家的入口文件index.php都是位于根目录中,那时项目名称就会被进口文件index.php所替代。在前几节里,我们已领略,一个Action文件就是一个行使模块,而选用模块中的每个方法(function)就是一个具体操作。因而,若是要拜访我们实例中的Index模块下的index操作。地址应该是

http://127.0.0.1/index.php/Index/index

只要进口文件不是在服务器的根目录,而是在myapp目录下,那么入口文件地方就是
Myapp/index.php,此时下面的URL访问就相应要换成
http://127.0.0.1/Myapp/index.php/Index/index

那般说应该很精晓了,然则别让那样多index给混乱咯,对应URL的布局去精晓每一个index的函义,同时注意分寸写

简易实操:

1
打开Myapp/Lib/Action/IndexAction.class.php文件,在index这一个function下再添加一个操作test

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index(){
  4.         $array = array();
  5.         $array[‘name’]    =    ‘thinkphp’;
  6.         $array[’email’]   =    ‘liu21st@gmail.com’;
  7.         $array[‘phone’]   =    ‘12335678’;
  8.         $value  =   ‘hello,ThinkPHP’;
  9.         $this->assign(‘array’,$array);
    1.         $this->assign(‘name’,$value);
    1.         $this->display();
    1.     }
    1.     public function test(){
    1.         header(“Content-Type:text/html; charset=utf-8”);
    1.         echo ‘哈,访问正确!!’;
    1.     }
  10. } // 类定义end

  11. ?>

复制代码

2
尝试对应URL结构,来访问那么些test操作,如若能得逞看到echo的文字。则那节大家又学会了多或多或少知识。

叠加知识点:
    去掉URL里面的index.php
    要去掉URL里的入口文件index.php,使URL类似那样的款型 
 http://127.0.0.1/Index/index
    可以按法定手册所提供的格局进行如下操作。
    1 承认httpd.conf配置文件中加载了mod_rewrite.so模块
    2 AllowOverride None 将None改为 All
    3 打开Myapp/Conf/config.php文件,在安排的数组中添加一行:
    ‘URL_MODEL’=>2,
    在输入文件所在的同级目录下,新建一个.htaccess文书,内容是

  1.     <IfModule mod_rewrite.c>
  2.     RewriteEngine on
  3.     RewriteCond %{REQUEST_FILENAME} !-d
  4.     RewriteCond %{REQUEST_FILENAME} !-f
  5.     RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  6.     </IfModule>

复制代码

假诺您的服务器环境支持rewrite,使用http://127.0.0.1/Index/index就可以正常访问到Index模块的index操作了。
    此后我们的求学中用到的URL,都是只要你使用了rewrite的情景。

第六节 CURD知识之一 C 创制(create)

 

.htaccess.rar (248 Bytes)

 

 

 

[教程] 一步一步规行矩步学习TP四(新手篇)

 

先是节  急速先河一个档次

其次节 简单认识项目里的顺序文件夹

其三节 配置项目,连接数据库。

第三节 简单询问TP的模版输出

第五节 初叶摸底URL怎么样访问模块操作

瞩目:看到众多留言说操作不成功或出错,请别忘记,此体系教程出来时,TP1.6还没出去,所以一种类6事先所介绍的示范和操作都如故专业版本1.5的,即使你选用1.6版,请对应两者差距性。
例如submit不能有name属性,是因为原本1.5有字段缓存进行过滤处理。1.6尚未了字段缓存。
比如说数据自动验证和自行填写都有了必然的界别。

至于1.6的行使可以下载快捷入门教程,是此体系新手篇的共同体版,并且附有示例源码。

第六节 CURD知识之一 C 创建(create)

从这一节开头,大家即将涉及到数据库操作,TP对数据库的操作越发简便,以下是一些基础知识讲解。

名词解析:
1  CURD:表示数据库多少个基本操作:创制:create,更新:update,读取:read,删除:delete

2  模型对象:即数据对象,你项目里每一个Model类文件都会对应着一个数据表(或者视图),模型与数量表存在一种炫耀关系。TP约定了命名要依据一定的正统,如若不适合,则需要按照景况举行额外的对应设置。例如Model类的tableName属性

在首节时,曾略为涉嫌Model类文件命名,现在再回首一下那有些的情节:
我们事先在数据库中,已创造了一个think_form数据库表,并且在配置文件config.php中,大家定义了数据表的前缀是think_,
模型类(Model)文件的命名规则是:

不包蕴前缀的数据库表表名还要首字母大写+Model.class.php

因而前边大家为think_form数据表在Myapp/Lib/Model目录下创制一个文本FormModel.class.php

模型类的不相同平日命名还是可以智能识别驼峰式的表命名,如若大家有个是近似think_new_table那样的表
可以命名为NewTableModel.class.php。默许配置便得以智能识别自动对应think_new_table表,由此不用修改配置。

支付进程中,只要简单地定义好与数据表对应的模型类(xxxModel.class.php),就可以展开对数据操作了。
怎样让这几个模型支撑电动验证,自动填充,自动过滤那些文化,在上边涉及到时会作相应讲解。

相似的话,在表中添加多少都是经过表单来确立,为了更直观地学习CURD中的C,大家接下去建立个表单来举行添加数据的操作。
事先我们已在Myapp/Lib/Model/下树立好FormModel.class.php类—-模型(M)
并且也在Myapp/Lib/Action/下添加了一个Index应用模块和写下了一个index操作—-控制器(C)
还要在Tpl目录下树立了与之相应的模版目录Index及index.html模板文件 ——-视图(V)
MVC格局的支付已展示了出来。
tdweb曾简要地包罗了TP中这三者的涉嫌,

C的效果,就是从M中取得数据到V,

运用TP以表单提交数据到库,流程和你所领悟的表单提交没有何样界别,只是TP简化了多少操作的处理进度。
俺们在实际操作中体会一下。
先来探望大家所定义的数额表form的字段:

  1. ‘id’,//自动编号
  2. ‘title’,//标题
  3. ‘content’,//内容
  4. ‘create_time’,//创建时间
  5. ‘update_time’//更新时间
  6. ’email’,//邮箱
  7. ‘status’,//状态

复制代码

其中的create_time字段是为着记录数据插入的小时,大家得以动用TP的多寡自动填充来处理。

在Model类定义 $_auto
属性,可以成功数据自动处理作用,用来拍卖默许值和别的系统写入字段。
专注1:该机关填写可能会覆盖表单提交项目。其目标是为着防止表单不合规提交字段。
小心2:要运用Model类的create方法创设数量对象的时候才会自行进行表单数据处理。

1 打开Myapp/Lib/Model/FormModel.class.php文件,更改代码为

  1. <?php
  2. class FormModel extends Model {
  3. // 自动填写设置
  4. protected $_auto  =  array(
  5.   array(‘status’,’1′,’ADD’),
  6.         array(‘create_time’,’time’,’ADD’,’function’),
  7. );
  8. }
  9. ?>

复制代码

代码知识要点:
Model类的$_auto属性由四个填充因子组成的数组,填充因子定义格式:

array(填充字段,填充内容,填充条件,附加规则)

填充字段:就是内需开展处理的表单字段,那几个字段并不一定倘若数据库表中的字段,对于表单内的扶植检测字段比如重复密码和验证码也可以拍卖。
填充条件:ADD | UPDATE | ALL(注意,此是1.5本子表达,1.6已改为1 2
3,后续教程有认证)
当为ADD时,会在增产多少时自动填充,那是默许的处理格局
当为UPDATE时,在更新数据的时候会自行填写
当为ALL时,所有意况下都会进行活动填写

外加规则:外加规则是对准填充内容而言,表示该内容填充的措施,包涵function,callback,field,string
对此field使用其余字段举办填写和string直接标示字符串作为值举行填空很好领会。例如地点

  1. array(‘status’,’1′,’ADD’),

复制代码

即使将气象status字段的值直接以1填充.

上边主要说说function与callback那七个附加规则。

  1. protected $_auto  =  array(
  2. array(‘create_time’,’time’,’ADD’,’function’),
  3. );

复制代码

上面create_time代表了要处理的字段,填充内容是time,附加规则是function使用函数,填充条件是ADD新增时处理,那么整行代码表示对create_time字段在新增的时候使time函数作为该字段的值举行机动填写。
再看一个function作为附加规则的事例

  1. protected $_auto  =  array(
  2. array(‘password’,’md5′,’ADD’,’function’),
  3. );

复制代码

当使用function作为附加规则时,首个填充内容就象征了那个因子是一个函数名称,该函数的参数就是意味填充字段的值,比如password的值是123456,则上面的代码会先将以此值使用函数md5(‘123456’),那样处理后再插入到数据表中去。
对此function(函数)和callback(回调方法)理论是一模一样的,只但是一个是意味填充内容所写的是函数名,另一个是表示填充内容是类中的方法名。函数能够是PHP5内置函数或你协调所写的函数。而callback是当前模型类所能调用的一个办法。 有关数据填充方面的详细资料,请参考官方使用手册
《ThinkPHP数据操作指南》

2 打开Myapp/Tpl/default/Index/index.html文件,大家修改代码将form写进去

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$title}</title>
  5. </head>
  6. <body>
  7. <form action=”__URL__/add” method=”post” name=”formname”
    id=”formname”>
  8.     <p>
  9.            <label for=”title”>标题:</label>
    1.            <input name=”title” type=”text” id=”title” />
    1.     </p>
    1.     <p>
    1.            <label for=”email”>邮箱:</label>
    1.           <input name=”email” type=”text” id=”email” />
    1.     </p>
    1.     <p><label
      for=”content”>内容:</label></p>
    1.     <p>
    1.         <textarea name=”content” rows=”5″ cols=”25″
      id=”content” class=”textarea” ></textarea>
    1.     </p>
    1.     <p><input type=”submit” value=”提交”
      /></p>
  10. </form>

  11. </body>

  12. </html>

复制代码

在上头代码中,我们大致地建了一个form表单,并将标题统一运用一个模板变量{$title}。
action提交到的处理地点是__URL__/add,其中__URL__是一个常量定义,表示近来模块地址,TP模板引擎会自动将这句解释为/index.php/Index/add,常见的沙盘使用的常量有

__ROOT__    网站根目录地址
__APP__         当前项目(入口文件)地址
__URL__         当前模块地址
__ACTION__   当前操作地址
__SELF__       当前 URL 地址

3 设置模板变量 {$title} ,扩展add操作方法

打开Myapp/Lib/Action/IndexAction.class.php文件,修改代码如下

  1.  
  2. <?php
  3. class IndexAction extends Action{
  4.     public function index() {
  5.        
       $this->assign(‘title’,’添加数据’);//那里设置了模版变量{$title}
  6.            $this->display();
  7.     }
  8.     // 处理表单数据的措施
  9.     function add()  {
    1.           $Form = D(“Form”);
    1.           if($Form->create()) {
    1.                    $Form->add();
    1.                    $this->redirect();
    1.           }else{
    1.                    header(“Content-Type:text/html;
      charset=utf-8”);
    1.                    exit($Form->getError().’ [ <A
      HREF=”javascript:history.back()”>返 回</A> ]’);
    1.          }
    1.     }
  10. }//类定义 end

  11. ?>

复制代码

代码知识要点:
模板变量赋值前面的章节已介绍过。那里就不啰嗦了。

我们来探视add方法的代码。
$Form = D(“Form”);
那里运用了TP的性状单字母函数D,是操作数据库时最常用的TP函数,表示实例化Form对象,
即$Form = new FormModel();
D函数的切实代码可以查看ThinkPHP目录内的common/function.php中的片段,
它会活动引入Model类,并认清以前要是实例化过那一个Model,就不再实例化,若然该Model不设有,就会抛出格外错误,别的,D可以跨系列访问Model,暂且忽略。

$Form->create()
选用Model类的Create方法创立一个Form对象,战败会回来false。

$Form->add(); //add方法会将表单数据开展写入
$this->redirect(); //执行跳转
就像是此不难几行代码,便一挥而就了对数据插入的处理。
后日大家得以品味一下在表单中输入数据进行提交试试了。
请先随便插入几条数据,以便下一节大家继承攻读CURD中的R

 

 

 

[教程] 一步一步循途守辙学TP五(从标准版过渡到1.6版)

很对不起!不得不出这一篇过渡小说。
为了让那连串教程不致于日后会误导,从那节初阶,让大家转型到1.6版的施用方式上。
而是对于1.6版的拔取,我也是在搜寻当中学习,错误和不足之处肯定会相比多,
故恳请流年大哥和tdweb,东至,yhustc等大大可以立时指正和增补,在此先谢谢了。

——————– 基于本学习连串1-4对接到本节的补充表达

表达1 从那节开首,TP或dev这多个简称指的都是ThinkPHP 1.6版,
可以到svn下载。http://thinkphp.googlecode.com/svn/branches/dev

下载后去除原来的ThinkPHP框架文件,将dev同样命名为ThinkPHP,并仍是放置于网站的根目录下。
别的,为了方便要求时得以对实例截图而不引起读者你误会,基于自身的网站目录结构,现将Myapp的index.php地方变动到Myapp文件夹下(不再是原来的根目录).
步1:将根目录中的原index.php剪切并粘贴到Myapp文件夹下。更改代码为:

  1. <?php
  2.     // 定义ThinkPHP路径
  3.     define(‘THINK_PATH’,’../ThinkPHP’);
  4.     // 定义项目名称
  5.     define(‘APP_NAME’,’Myapp’);
  6.     // 定义项目路线
  7.     define(‘APP_PATH’,’.’);
  8.     // 加载框架入口文件
  9.     require(THINK_PATH.’/ThinkPHP.php’);
    1.     // 实例化那个项目
    1.     $App = new App();
    1.     // 执行开端化
    1.     $App->run();
  10. ?>

复制代码

代码补充注释:代码中项目名称其实是足以不用定义的,系统会自行按照近年来的目录名定义名称。
步2: 将.htaccess文件复制一份粘贴到Myapp目录下。
步3: 将Cache目录,Temp目录,Data目录清空。

证实2 第五节中对于URL访问的默许方式
在dev版默许配置中,dispatch即URL调度功效是倒闭的,所以在默许情势下,要拜访Index模块的index操作,地址应是:index.php?m=index&a=index,m指的是模块变量(Model),a指的是操作变量(Action)。
尽管要利用类似第五节中的index.php/moduleName/actionName方式,则要在config.php文件里安装DISPATCH_ON为true;
而且,也唯有敞开了此功用后,URL_MODEL的装置才会立见功效。
(在上头的章节我们提及过,可以安装URL_MODEL为2来使用rewrite成效去除突显index.php)
故此,现在大家的config.php代码是

  1. <?php
  2. if (!defined(‘THINK_PATH’)) exit();
  3. return array(
  4.     ‘DB_TYPE’=>’mysql’, // 使用的数据库是mysql
  5.     ‘DB_HOST’=>’localhost’,
  6.     ‘DB_NAME’=>’myapp’,// 数据库名
  7.     ‘DB_USER’=>’root’,
  8.     ‘DB_PWD’=>’123456’,// 填写您总是数据库的密码
  9.     ‘DB_PORT’=>’3306’,
    1.     ‘DB_PREFIX’=>’think_’, // 数据表表名的前缀
      请参见http://thinkphp.cn/Article/10
    1.     ‘DISPATCH_ON’=> true,
    1.     ‘URL_MODEL’=>2,
    1.     ‘TMPL_VAR_IDENTIFY’=>’array’,// 模板变量识别
      留空自动判断 array 数组 obj 对象
    1.     ‘DEBUG_MODE’=>true,//开启调试情势
  10. );

  11. ?>

复制代码

代码补充注释:此节之后的情节会涉嫌到模板输出及数据操作,所以在那里肯定设置了模版变量为数组,并拉开TP的调试格局。

小心3:第六节 CURD知识之一 C(创设)中的自动填写
dev版的自发性填写效率已移到AdvModel类中。要接纳此功能,大家需求在Myapp/Lib/Model类文件中引入该类.
那就是说再来看看大家所定义的数额表form的字段:

  1. ‘id’,//自动编号
  2. ‘title’,//标题
  3. ‘content’,//内容
  4. ‘create_time’,//创造时间
  5. ‘update_time’//更新时间
  6. ’email’,//邮箱
  7. ‘status’,//状态

复制代码

引用tdweb手记:

如若急需新建数据时自动填写时间戳,只须求安装数据表字段名”create_time”,假若急需修改时自动保存时间戳,那么设置数据表字段名为”update_time”。
一经您的数据表字段名不是默许的,那么须要指定,例如
protected $autoCreateTimestamps = ‘ctime’;
protected $autoUpdateTimestamps = ‘utime’;

因而,让大家开辟Myapp/Lib/Model/FormModel.class.php文件,将代码更改为如下:

  1. <?php
  2. // 导入AdvModel类
  3. alias_import(‘AdvModel’);
  4. class FormModel extends AdvModel {
  5. /* 要是数据表的 成立时间
    字段不是create_time,必要此外设置成如下格局*/
  6.     //protected $autoCreateTimestamps = ‘ctime’;
  7.     // 自动填写设置
  8.   protected $_auto  =  array(
  9.   array(‘status’,’1′),//自动填写的概念规则请参见第六节内容
    填充规则有所差距,见附注

  10. );

  11. }

  12. ?>

复制代码

代码补充注释:
专注:dev版的填充条件改为1 新增 2 更新 3
包蕴1和2,默许为新增。所以定义更有利于了.而拔取ADD | UPDATE |
ALL会无效的(TO大运小弟:TP代码还有一个特征就是函数或方法的命名很吻合语言应用习惯,原来的add,update,all很直观,易记,可惜没了)
array(‘field’,’填充内容’,’填充条件’,’附加规则’,[外加参数])

alias_import($alias,$classfile=”)高速定义和别名导入 

这是骤增的函数,我尝试注明一下,不科学请指正。
该函数可以动态设置文件列表导入和直接导入文本,常会用到的公文别名有

‘Page’                  分页类     Page.class.php’,
‘ViewModel’        视图模型类 ViewModel.class.php’,
‘AdvModel’          高级模型类 AdvModel.class.php’,
‘RelationModel’   关联模型类 RelationModel.class.php’,

当要引入已定义别名的文本,大家若是直接在参数中传送别名就行了。
别名能够自动在ThinkPHP/Common/alias.php中增添。
除外使用已定义的别名外,也得以应用动态指定。

  1. alias_import(‘zzg’,APP_PATH.’/Lib/ORG/zzg.php’);

复制代码

或四遍引入多少个文本

  1. $ailias=array(
  2.     ‘Abc’=>   APP_PATH.’/Lib/ORG/abc.php’,
  3.     ‘Efg’ =>  APP_PATH.’/Lib/Other/efg.php’,
  4. );
  5. alias_import($ailias);

复制代码

注:指定文件或别名不存在时会重返false

好像的函数还有
import($class,$baseUrl = ”,$ext=’.class.php’)

天命小弟语:由于特性难题,这些措施未来不再接济

那是ThinkPHP内建的类库和文件导入的一个函数,具有缓存和检测机制,相同的公文不会再一次导入,冲突时会提醒错误。使用那方式时,系统会自动识别导入类库文件的地方:
Think 代表TP框架基类库 即ThinkPHP/Lib/Think目录
ORG 代表第三方共用类库 即ThinkPHP/Lib/ORG目录
@ 代表当前项目类库,例如Import(“@.Action.xxxAction”)
—-即Myapp/Lib/Action/xxxAction.class.php
@指的是近日项目名称,这和应用Import(“Myapp.Action.xxxAction”)是如出一辙的。
TP的预定是Think、ORG等导入的是以连串(TP)基类库为相对起首目录,否则就觉着是项目(Myapp)应用类库为发端目录。
在意1 选取时要专注文件名的轻重写
专注2
Import会自动将.转换为/,假使文件名中含有.,则要将.改为#才能正常导入。
留神3 导入的类公事后缀默许是.class.php

2 第三方框架类库导入:vendor($class,$baseUrl = ”,$ext=’.php’), 开始目录统一是ThinkPHP/Vendor
默许后缀是.php
注:vendor也应用了Import函数。因而…

注脚3,原来的沙盘文件index.html保持不变,因为我们已启用了DISPATCH_ON开关。
仅将Myapp/Lib/Action/IndexAction.class.php代码更改如下

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index()
  4.     {
  5.         $Form = D(“Form”)->select();
    //也可以D(“Form”)->findAll()
  6.         dump ( $Form );// 输出查询结果
  7.         $this->assign(‘title’,’添加数据’);//定义标题的沙盘变量
  8.         $this->display();// 渲染模板
  9.     }
    1.     // 插入数据
    1.     function add()
    1.     {
    1.         header(“Content-Type:text/html;
      charset=utf-8”);//为了唤起时不乱码
    1.         $Form = D(‘Form’);//实例化Form模型
    1.         $vo  =   $Form->create();//创造数量对象
    1.         if(false === $vo) {
    1.                exit($Form->getError().’ [ <a
      htef=”javascript:history.back()”>返 回</a> ]’);
    1.         }
    1.         $rs =  $Form->add();//插入数据
    1.         if ($rs) {
    1.             redirect(‘/Myapp/’,2,’数据增加成功!’);
    1.         }else{
    1.             exit($Form->getError().’ [ <a
      HREF=”javascript:history.back()”>返 回</a> ]’);
    1.         }
    1.     }
  10. }//类定义 end

  11. ?>

复制代码

代码补充表明:

select($options=array());

为了有利于查看数据,index操作中使用到了一个着力查询艺术

tdweb语:select()方法代替了以前相比较盛行的findAll(),不传任何参数则是取得全体数量。

大家仍是渐进,具体有关查询的方法会在利用的时候陆续一起上学。

dump($var, $echo=true,$label=null,
$strict=true)
函数。浏览器友好的变量输出。
当只有一个$var参数时,会一向打印这些$var。
dump($Form);会输出接近

  1. array(1) {
  2.   [0] => array(7) {
  3.     [“id”] => string(1) “1”
  4.     [“title”] => string(18) “那是测试数据”
  5.     [“content”] => string(4) “dfdf”
  6.     [“create_time”] => string(10) “1212724876”
  7.     [“update_time”] => string(1) “0”
  8.     [“status”] => string(1) “1”
  9.     [“email”] => string(12) “dddd@ddd.com”
    1.   }
  10. }

复制代码

也可以设置参数
dump($要出口的变量, 是或不是直接打印0或1,变量表达 ,
是还是不是以正规数组方式0,1)
例如:

  1. dump($Form,1,’Form数据’,0);

复制代码

出口接近

  1. Form数据 Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [id] => 1
  6.             [title] => 那是测试数据
  7.             [content] => dfdf
  8.             [create_time] => 1212724876
  9.             [update_time] => 0
    1.             [status] => 1
    1.             [email] => dddd@ddd.com
    1.         )
  10. )

复制代码

$vo = $Form->create();

成立数量对象 但不保留到数据库
模型类的create方法,借使没有设值,则默许是由此表单提交的数据$_POST进行创办。
还要Create方法也支撑从任何方法例如数据对象或者数组等来制造,
对那办法与tdweb的说教有些不同,望指正。

出于简洁版并不自动生成数据表data缓存,所以只要您用create()而不给她传递任何值,仅仅依靠$_POST获得值,那么不论是您的表单POST什么,程序都会觉得是数据库的字段拼入QL,所以,如果您POST过来的数目而数据表里没有这一个字段,则会冒出增进败北。

但自己看到代码里就如已自行过滤不切合的数量,并测试过添加多少表里没有的字段没有出现增进失利。
redirect(‘/Myapp/’,2,’数据增进成功!’); 跳转函数。
函数原型:redirect($url,$time=0,$msg=”)
看参数就早已很通晓了。

接通篇就先到此处,指出我们多点下手实际操作和看望源代码。

下一节大家再持续,请各位务必多多指教。

 

 

[教程] 一步一步循途守辙学习TP六(新手篇/1.6版)

在上一节实操中,大家已成功插入了多条测试的数据,可是很显眼,大家发现中间的邮箱地址一项不吻合格式也足以付出,那本来不是大家所期望观察的,那时我们得以选拔TP的数额自动验证作用去决定用户输入。
而以前已交付的数码,也得以透过编制数据将原先错误格式的邮箱地址重新改变为正确的email,那几个处理让大家都坐落下一节的多寡编辑中一起学习。

在此从前,先来看望TP最基本的数码查询。

8 节数据查询(CURD之R)
TP的询问很人性化地分为单数据再次回到或多多少重临,视乎自己项目过程中的实际必要,根据这一体系教程的求学习惯,咱们仍是在实际操作中去精晓,以代码来学学,一起出手吧。

1
先将Myapp/Lib/Action/indexAction.class.php代码稍作修改,以造福更直观地查看查询结果。

  1.     public function index()
  2.     {
  3.         $Form = D(“Form”);
  4.         $data   =   $Form->order(‘id desc’)->select();
  5.         $this->assign(‘data’,$data);
  6.         $this->assign(‘title’,’添加数据’);
  7.         $this->display();
  8.     }

复制代码

2
在第三节时,大家驾驭过模板变量的巡回输出,现在选择那知识点将相应的沙盘文件Myapp/Tpl/default/Index/index.html修改如下

  1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  2. <html xmlns=”http://www.w3.org/1999/xhtml"&gt;
  3. <head>
  4. <meta http-equiv=”Content-Type” content=”text/html;
    charset=utf-8″ />
  5. <title>{$title}</title>
  6. <style type=”text/css”>
  7. h3{color:green;}
  8. .box{width:600px;margin:10px auto;border:1px dashed
    #e8e8e8;padding:5px;}
  9. .submit{height:2em;padding:0 5px;cursor:pointer;}

  10. </style>

  11. </head>

  12. <body>

  13. <form action=”__URL__/add” method=”post” name=”formname”
    id=”formname” class=”box”>

    1.     <p><label
      for=”title”>标题:</label><input name=”title”
      type=”text” id=”title” /></p>
    1.     <p><label
      for=”email”>邮箱:</label><input name=”email”
      type=”text” id=”email” /></p>
    1.     <p><label
      for=”content”>内容:</label></p>
  14. <p>

    1.         <textarea name=”content” rows=”6″ cols=”50″
      id=”content” class=”textarea” ></textarea>
    1.     </p>
  15. <p><input name=”submit” type=”submit” value=” 提交 ”
    class=”submit” /></p>

  16. </form>

  17. {//Form表数据循环输出}

  18. <iterate name=”data” id=”vo”>

  19. <div class=”box”>

  20. <h3>NO.{$vo.id}:{$vo.title}</h3>

  21. <p>———–由 {$vo.email} 发表于:
    <em>{$vo.create_time|date=’Y-m-d’,###}</em></p>

  22. <p>内容:</p>

  23. <p>{$vo.content}</p>

  24. </div>

  25. </iterate>

  26. </body>

  27. </html>

复制代码

在浏览器中输入http://127.0.0.1/Myapp/,可以看到现在已将数据显示在模板了

 

那会儿大家如果每输入一条数据信息,就会依照id倒序的格局浮现在模板上。

—复苏内容停止—