您的位置:首页 > 编程语言 > PHP开发

thinkPHP入门(二):基础

2016-04-13 09:38 417 查看
最近正在学习thinkphp,同时博客同步记录学习笔记,但是内容大多都是[1] 提供的文档,所以,强烈建议直接阅读该文档,此文仅作为本人学习记录之用

*在此之前,假设数据库中已经有一张表 think_form 了,具体内容请看[1]

CURD

CURD指的是数据的基本操作:

C: create

U: update

R: read

D: delete

创建数据

通过表单

通过表单提交数据是很常见的一种提交数据方式。

在 thinkphp 中,是以控制器的形式来执行基本的业务的。

在[1] 中的例子中,以
Form
为控制器例子。

首先在
Home/Controller/
下创建类:
FormContrller.class.php


<?php
namespace Home\Controller;
use Think\Controller;
class FormController extends Controller{
}


然后在
Home/View/From
下添加文件(没有就创建目录):
add.html


<FORM method="post" action="__URL__/insert">
标题:<INPUT type="text" name="title"><br/>
内容:<TEXTAREA name="content" rows="5" cols="45"></TEXTAREA><br/>
<INPUT type="submit" value="提交">
</FORM>


此时,就可以通过以下链接访问表单页面了:

localhost/xiaojian/html/thinkphp/index.php/home/form/add

(url 不分大小写)

看到这里,相信你都可以通过这个案例,举一反三了,总结出一些规律了。

View 文件夹下以控制器名字命名文件夹,改文件夹下的html 文件是对应控制器的视图文件

当通过PATHINFO 模式访问时,首先服务器会寻找控制器下 add 的操作名,没有则直接渲染同时视图显示。

如果在Form 中添加add 的函数,那么表单就不会出现了,而是执行add 的函数的输出结果。

然后,给Form 类添加insert 操作,用于向数据库插入数据:

<?php
namespace Home\Controller;
use Think\Controller;
class FormController extends Controller
{
public function insert()
{
$Form = D('Form');
if($Form->create())
{
$result = $Form->add();
if($result)
{
$this->success('数据库添加成功');
}
else    $this->error('添加数据库错误!');
}
else
{
$this->error($Form->getError());
}
}
}

?>


而在
add.html
中,有:

<FORM method="post" action="__URL__/insert">


由此可以猜想
__URL__
其实就是这一段:

localhost/xiaojian/html/thinkphp/index.php/home/form

(简直牛逼)

后面就是直接的添加数据了。

model

*在[1] 中这里叫做模型

在 FormController类中的insert 函数用到了一个 D 函数,这个D 函数呢向我刚才那么直接就add 进数据库,不安全且危险。这里thinkphp 提供了数据验证的方法。

D 函数需要对应 model 类的。所以在/Home/Model/ 下添加
FormModel.class.php
:

<?php
namespace Home\Model;
use Think\Model;
class FormModel extends Model
{
//定义自动验证
protected $_validate = array(
array('title','require','标题必须'),
);
//定义自动完成
protected $_auto = array(
array('create_time','time',1,'function'),
);
}
?>


此时如果直接在 add 中提交数据,那么就会得到提示:

:(

标题必须

具体这个验证怎么用,待学。

内部提交

数据还支持内部提交:

(要保证数据的绝对安全)

$Form   =   D('Form');
$data['title']  =   'ThinkPHP';
$data['content']    =   '表单内容';
$Form->add($data);


或者:

$Form   =   D('Form');
$Form->title  =   'ThinkPHP';
$Form->content    =   '表单内容';
$Form->add();


读取数据

读取数据使用M函数,通过find 函数实现。

在FormController类中定义 read 方法:

public function read($id=0){
$Form   =   M('Form');
// 读取数据
$data =   $Form->find($id);
if($data) {
$this->assign('data',$data);// 模板变量赋值
}else{
$this->error('数据错误');
}
$this->display();
}


find 返回值如下:

array(
'id'        =>  5,
'title'     =>  '测试标题',
'content'   =>  '测试内容',
'status'    =>  1,
)


渲染模板文件如下:

<table>
<tr>
<td>id:</td>
<td>{$data.id}</td>
</tr>
<tr>
<td>标题:</td>
<td>{$data.title}</td>
</tr>
<tr>
<td>内容:</td>
<td>{$data.content}</td>
</tr>
</table>


如果你只需要查询某个字段的值,还可以使用getField方法,例如:

$Form = M("Form");
// 获取标题
$title = $Form->where('id=3')->getField('title');


更新数据

首先,可以建一个视图,把数据库的内容读出来,然后通过表单提交。

在这里也是使用M 方法。

那么在FormController 类中添加两个方法,一个edit, 一个update。

public function edit($id=0){
$Form   =   M('Form');
$this->assign('vo',$Form->find($id));
$this->display();
}
public function update(){
$Form   =   D('Form');
if($Form->create()) {
$result =   $Form->save();
if($result) {
$this->success('操作成功!');
}else{
$this->error('写入错误!');
}
}else{
$this->error($Form->getError());
}


然后就可以通过链接访问:

localhost/app/index.php/home/Form/edit/id/1

与上面的内容大同小异,主要是 save 函数的用法。

同样的,update 也提供了直接内部其他的方法,可以直接去阅读文档。

删除数据

删除数据使用delete 的方法:

$User = M("User"); // 实例化User对象
$User->where('id=5')->delete(); // 删除id为5的用户数据
$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
$User->where('status=0')->delete(); // 删除所有状态为0的用户数据


返回值是是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。

[参考资料]

[1] 快速入门
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: