导入form目录下面的form.sql文件到你的数据库中,其中创建了一个think_form表:
CREATE TABLE IF NOT EXISTS `think_form` (
`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` varchar(255) NOT NULL,
`create_time` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
并且修改Conf/config.php 文件中的数据库配置为你的实际数据库连接信息 'DB_TYPE'=>'mysql',
'DB_HOST'=>'localhost',
'DB_NAME'=>'examples',
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'think_',
然后访问:http://localhost/form/
会显示:
如果你的示例目录有调整请自行修改访问URL地址。
如果我们没输入标题就提交表单,会显示:

当标题和内容都填写后提交,就会显示:

表示表单数据写入数据库完成。如果表单提交后没有任何显示或者显示404错误,可能是你的环境不支持PATHINFO,解决办法如下:
- 1、修改项目配置文件config.php中的URL_MODEL设置为3
- 2、然后删除Runtime目录下面的~runtime.php文件后重新运行即可
// 处理表单数据
public function insert() {
$Form = D("Form");
if ($Form->create()) {
if (false !== $Form->add()) {
$this->success('数据添加成功!');
} else {
$this->error('数据写入错误');
}
} else {
// 字段验证错误
$this->error($Form->getError());
}
}
create方法完成了下面几项工作:- 1、表单数据验证
- 2、数据表数据的自动完成
- 3、自动根据表单提交数据生成数据对象
class FormModel extends Model {
// 自动验证设置
protected $_validate = array(
array('title', 'require', '标题必须!', 1),//1为必须验证
array('title', '', '标题已经存在', 0, 'unique', self::MODEL_INSERT),
array('content', 'require', '内容必须'),
);
// 自动填充设置
protected $_auto = array(
array('create_time', 'time', self::MODEL_INSERT, 'function'),
);
}
可以看到,除了对表单数据进行自动验证外,在写入数据库之前还自动生成了create_time字段的数据,写入了当前的时间戳作为字段值。关于模型类中的自动完成和自动验证的定义可以详细参考在线手册中的相关部分。