产品模板总结

原创 2018-12-24 10:37:37 217
摘要:    总体上来说产品模块和新闻模块几乎相同,软删除/更新,依据id主键来进行,还有需要通过数据表中uid查询user表中的username.通过公共函数来处理,和之前一样内容的更新需要使用htmlspecialchars_decode进行转会字符.一.产品列表    和之前一样,查询所有数据,进行分页处理,传入模板,

    总体上来说产品模块和新闻模块几乎相同,软删除/更新,依据id主键来进行,还有需要通过数据表中uid查询user表中的username.通过公共函数来处理,和之前一样内容的更新需要使用htmlspecialchars_decode进行转会字符.

一.产品列表

    和之前一样,查询所有数据,进行分页处理,传入模板,渲染输出

    模型文件:Product.php

<?php

namespace app\admin\model;

use think\Model;
use think\model\concern\SoftDelete;

class Product extends Model

{
    //使用trait软删除
    use SoftDelete;

    //表名
    protected $table = 'product';

    //主键
    protected $pk = 'id';

    //开启自动时间戳
    protected $autoWriteTimestamp = true;

    //设置一下用户自定义的新增和更新时间的字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    //设置软删除字段
    protected $defaultSoftDelete = 'delete_time';

}

    控制器文件

namespace app\admin\controller;
use app\admin\common\Common;
use think\facade\Request;
use app\admin\model\Product as ProductModel;

class Product extends Common
{
    public function index()
    {
        //每页数据
        $num = 5;

        //获取全部产品
        $rows = ProductModel::order('id')->paginate($num);

        $page = $rows->render();
        //模板赋值
        $this->view->assign('rows',$rows);
        $this->view->assign('page',$page);
        //渲染产品列表
        return $this->view->fetch();
    }

产品图片模块没弄,下一步去弄

15.png

二.更新操作,依旧根据id传到控制器中,进行查询,将数据返回模板展示,然后进行修改,再将数据传到控制器,依据传过来的id来进行更新操作

    渲染更新界面

   public function edit()
    {
        $id = Request::param('id');
        $info = ProductModel::get($id);
        $this->view->assign('info',$info);
        //渲染修改页面
        return $this->view->fetch();
    }

    上传图片接口

public function upload()
{
    //获取上传图片信息
    $file = Request::file('img');
    if(!$file){
        return ['res'=>'0', 'msg'=>'没有图片上传'];
    }
    //执行验证
    if($info = $file->validate(['ext'=>'jpg,jpeg,gif,png'])->move('upload')){
        return json(['errno'=>0,'data'=>['/upload/'.$info->getSaveName()]]);
    }else {
        return $file->getError();
    }
}

    执行更新操作

public function doEdit()
{
    //获取提交过来的数据
    $data = Request::param();
    $id = $data['id'];
    //验证id,不许无条件更新
    if(!$id){
        return ['res'=>0,'msg'=>'非法操作'];
    }
    //执行更新并返回对应信息
    $res = ProductModel::update($data,['id',$data['id']]);
    if($res){
        return ['res'=>1,'msg'=>'修改成功'];
    }else{
        return ['res'=>2,'msg'=>'修改失败'];
    }
}

16.png

三.新增操作

    渲染新增页面,将表单中的信息传到控制器中,进行新增操作,判断标题是否重复,不允许有重复的标题

public function add()
{
    //添加页面
    return $this->view->fetch();
}

public function doAdd()
{
    //获取提交过来的数据
    $data = Request::param();
    $title = $data['title'];
    
    //查询是否有重复的标题
    $info = ProductModel::where('title',$title)->find();
    //如果有,则报出错误信息
    if($info){
        return ['res'=>0,'msg'=>'标题重复'];
    }
    //进行新增
    $res = ProductModel::create($data);
    //返回对应信息
    if($res){
        return ['res'=>1,'msg'=>'发布成功'];
    }else{
        return ['res'=>2,'msg'=>'发布失败'];
    }
}

17.png

四.删除操作

    依旧是软删除操作,在模型中设置对应参数

//软删除操作
public function del()
{
    //获取删除id
    $id = Request::param('id');
    //不允许无条件删除
    if(!$id){
        return ['res'=>2,'msg'=>'非法操作'];
    }
    //执行删除
    $res = ProductModel::destroy($id);
    //判断是否成功
    if($res){
        return ['res'=>1,'msg'=>'删除成功'];
    }
    else{
        return ['res'=>0,'msg'=>'删除失败'];
    }
}

18.png








批改老师:韦小宝批改时间:2018-12-24 11:46:34
老师总结:写的很不错哦!完成了这个项目后可以考虑写个自己的博客站哦!博客站和企业站相差并不大!

发布手记

热门词条