前端页面insert.html
标题
分类
{volist name='cateList' id='cate'}
{$cate.name}
{/volist}
内容
标题图片
发布
后台:
模型 ArtCate.php<?php
namespace app\common\model;
use think\Model;
/**
* zh_user表的模型
*/
class ArtCate extends Model
{
protected $pk = 'id';//默认主键
protected $table = 'zh_article_cate';//默认数据表
//第一种方式是全局开启,在数据库配置文件中进行设置:
//'auto_timestamp' => true,
//protected $autoWriteTimestamp = true;//我已经在数据库配置文件中进行设置,这里不需要设置,不用设置为false即可
// 定义时间戳字段名
protected $createTime = 'create_time';
protected $updateTime = 'update_time';
//定义时间格式
protected $dateFormat = 'Y年m月d日';
//开启自动模式
protected $auto = [];//无论是新增或更新都要设置的字段
//仅新增的有效(参数是字段名)
protected $insert = ['create_time', 'status'=>1];
//仅更新的设置有效(参数是字段名)
protected $update = ['update_time'];
}
模型 Article.php<?php
namespace app\common\model;
use think\Model;
/**
* zh_user表的模型
*/
class Article extends Model
{
protected $pk = 'id';//默认主键
protected $table = 'zh_article';//默认数据表
//第一种方式是全局开启,在数据库配置文件中进行设置:
//'auto_timestamp' => true,
//protected $autoWriteTimestamp = true;//我已经在数据库配置文件中进行设置,这里不需要设置,不用设置为false即可
// 定义时间戳字段名
protected $createTime = 'create_time';
protected $updateTime = 'update_time';
//定义时间格式
protected $dateFormat = 'Y年m月d日';
//开启自动模式
protected $auto = [];//无论是新增或更新都要设置的字段
//仅新增的有效(参数是字段名)
protected $insert = ['create_time', 'status'=>1, 'is_hot'=>0, 'is_top'=>0];
//仅更新的设置有效(参数是字段名)
protected $update = ['update_time'];
}
文章验证器 Article.php<?php
namespace app\common\validate;
use think\Validate;//调用框架的验证类
class Article extends Validate
{
protected $rule = [
'title|标题' => 'require|length:2,50|chsAlphaNum',
//'title_img|图片' => 'require',
'content|文章内容' => 'require',
'user_id' => 'require',
'cate_id' => 'require',
];
}
控制器(重要)保存文章 index.php
一开始记得引入TP框架类问价和自定义类问价
use app\common\model\ArtCate;
use app\common\model\Article;
use think\facade\Request;/**
* 保存文章
*/
public function save()
{
//判断提交类型是否为post
if(Request::isPost()){
//获取用户提交的文章信息
$data = Request::post();
// halt($data);//测试,打印输出
$rule = 'app\common\validate\Article';
$res = $this->validate($data, $rule);
if($res !== true){
//验证失败
$this->error($res);
}else{
//判断是否有选择上传文件,选择了文件才进行验证等等步骤
if(!empty($_FILES['title_img']['tmp_name'])){
//echo '已选择文件';
//验证成功,获取上传的信息
$file = Request::file('title_img');
//文件信息验证成功后,再上传服务器指定目录,以public为起始目录
$info = $file->validate([
'size'=>1000000,
'ext'=>'jpeg,jpg,png,gif',
])->move('uploads/');
//判断是否上传成功
if($info){
$data['title_img'] = $info->getSaveName();
}else{
$this->error($file->getError());
}
}
//将数据插入数据表中
if(Article::create($data)){
$this->success('文章发布成功!', 'index/index');
}else{
$this->error('文章发布失败!');
}
}
}else{
$this->error('请求类型错误!');
}
}
数据表结构